//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef CHOREOACTOR_H #define CHOREOACTOR_H #ifdef _WIN32 #pragma once #endif #include "tier1/utlvector.h" class CChoreoChannel; class CChoreoScene; class CUtlBuffer; class IChoreoStringPool; //----------------------------------------------------------------------------- // Purpose: The actor is the atomic element of a scene // A scene can have one or more actors, who have multiple events on one or // more channels //----------------------------------------------------------------------------- class CChoreoActor { public: // Construction CChoreoActor(void); CChoreoActor(const char *name); // Assignment CChoreoActor &operator=(const CChoreoActor &src); // Serialization void SaveToBuffer(CUtlBuffer &buf, CChoreoScene *pScene, IChoreoStringPool *pStringPool); bool RestoreFromBuffer(CUtlBuffer &buf, CChoreoScene *pScene, IChoreoStringPool *pStringPool); // Accessors void SetName(const char *name); const char *GetName(void); // Iteration int GetNumChannels(void); CChoreoChannel *GetChannel(int channel); CChoreoChannel *FindChannel(const char *name); // Manipulate children void AddChannel(CChoreoChannel *channel); void RemoveChannel(CChoreoChannel *channel); int FindChannelIndex(CChoreoChannel *channel); void SwapChannels(int c1, int c2); void RemoveAllChannels(); void SetFacePoserModelName(const char *name); char const *GetFacePoserModelName(void) const; void SetActive(bool active); bool GetActive(void) const; bool IsMarkedForSave() const { return m_bMarkedForSave; } void SetMarkedForSave(bool mark) { m_bMarkedForSave = mark; } void MarkForSaveAll(bool mark); private: // Clear structure out void Init(void); enum { MAX_ACTOR_NAME = 128, MAX_FACEPOSER_MODEL_NAME = 128 }; char m_szName[MAX_ACTOR_NAME]; char m_szFacePoserModelName[MAX_FACEPOSER_MODEL_NAME]; // Children CUtlVector m_Channels; bool m_bActive; // Purely for save/load bool m_bMarkedForSave; }; #endif // CHOREOACTOR_H