diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /tools/pet/petdoc.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'tools/pet/petdoc.h')
| -rw-r--r-- | tools/pet/petdoc.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/tools/pet/petdoc.h b/tools/pet/petdoc.h new file mode 100644 index 0000000..d0f56c7 --- /dev/null +++ b/tools/pet/petdoc.h @@ -0,0 +1,122 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//===========================================================================// + +#ifndef PETDOC_H +#define PETDOC_H + +#ifdef _WIN32 +#pragma once +#endif + + +#include "dme_controls/inotifyui.h" +#include "datamodel/dmehandle.h" +#include "datamodel/dmelement.h" + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class IPetDocCallback; +class CPetDoc; +class CDmeParticleSystemDefinition; + + +//----------------------------------------------------------------------------- +// The file format for particle system definitions +//----------------------------------------------------------------------------- +#define PET_FILE_FORMAT "pcf" + + +typedef CDmrElementArray<CDmeParticleSystemDefinition> CDmrParticleSystemList; + + +//----------------------------------------------------------------------------- +// Contains all editable state +//----------------------------------------------------------------------------- +class CPetDoc : public IDmNotify, CBaseElementPropertiesChoices +{ +public: + CPetDoc( IPetDocCallback *pCallback ); + ~CPetDoc(); + + // Inherited from INotifyUI + virtual void NotifyDataChanged( const char *pReason, int nNotifySource, int nNotifyFlags ); + virtual bool GetIntChoiceList( const char *pChoiceListType, CDmElement *pElement, + const char *pAttributeName, bool bArrayElement, IntChoiceList_t &list ); + + // Sets/Gets the file name + const char *GetFileName(); + void SetFileName( const char *pFileName ); + + // Dirty bits (has it changed since the last time it was saved?) + void SetDirty( bool bDirty ); + bool IsDirty() const; + + // Creates a new document + void CreateNew(); + + // Saves/loads from file + bool LoadFromFile( const char *pFileName ); + void SaveToFile( ); + + // Returns the root object + CDmElement *GetRootObject(); + + // Returns the root object fileid + DmFileId_t GetFileId(); + + // Called when data changes (see INotifyUI for flags) + void OnDataChanged( const char *pReason, int nNotifySource, int nNotifyFlags ); + + // Returns the particle system definition list + CDmAttribute *GetParticleSystemDefinitionList(); + + // add a new definition we've created + void AddNewParticleSystemDefinition( CDmeParticleSystemDefinition *pNew, + CUndoScopeGuard &Guard ); + + // Adds a new particle system definition + CDmeParticleSystemDefinition *AddNewParticleSystemDefinition( const char *pName ); + + // Deletes a particle system definition + void DeleteParticleSystemDefinition( CDmeParticleSystemDefinition *pParticleSystem ); + + // find particle system def by name + CDmeParticleSystemDefinition *FindParticleSystemDefinition( const char *pName ); + + // Replace any particle system with the same name as the passed-in definition + // with the passed-in definition + void ReplaceParticleSystemDefinition( CDmeParticleSystemDefinition *pParticleSystem ); + + // Does a particle system exist already? + bool IsParticleSystemDefined( const char *pName ); + + // For element choice lists. Return false if it's an unknown choice list type + virtual bool GetStringChoiceList( const char *pChoiceListType, CDmElement *pElement, + const char *pAttributeName, bool bArrayElement, StringChoiceList_t &list ); + virtual bool GetElementChoiceList( const char *pChoiceListType, CDmElement *pElement, + const char *pAttributeName, bool bArrayElement, ElementChoiceList_t &list ); + + // Updates a specific particle defintion + void UpdateParticleDefinition( CDmeParticleSystemDefinition *pDef ); + + // Update all particle definitions + void UpdateAllParticleSystems( ); + +private: + // Creates the root element + bool CreateRootElement(); + + IPetDocCallback *m_pCallback; + CDmeHandle< CDmElement > m_hRoot; + char m_pFileName[MAX_PATH]; + bool m_bDirty; +}; + + +#endif // PETDOC_H |