This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

86 lines
2.3 KiB
C++

//========= 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<CChoreoChannel *> m_Channels;
bool m_bActive;
// Purely for save/load
bool m_bMarkedForSave;
};
#endif // CHOREOACTOR_H