You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
95 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef CHOREOCHANNEL_H |
|
#define CHOREOCHANNEL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "tier1/utlvector.h" |
|
#include "tier1/utlrbtree.h" |
|
|
|
class CChoreoEvent; |
|
class CChoreoActor; |
|
class CChoreoScene; |
|
class CUtlBuffer; |
|
class IChoreoStringPool; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: A channel is owned by an actor and contains zero or more events |
|
//----------------------------------------------------------------------------- |
|
class CChoreoChannel |
|
{ |
|
public: |
|
// Construction |
|
CChoreoChannel( void ); |
|
CChoreoChannel( const char *name ); |
|
|
|
// Assignment |
|
CChoreoChannel& operator=(const CChoreoChannel& src ); |
|
|
|
// Serialization |
|
void SaveToBuffer( CUtlBuffer& buf, CChoreoScene *pScene, IChoreoStringPool *pStringPool ); |
|
bool RestoreFromBuffer( CUtlBuffer& buf, CChoreoScene *pScene, CChoreoActor *pActor, IChoreoStringPool *pStringPool ); |
|
|
|
// Accessors |
|
void SetName( const char *name ); |
|
const char *GetName( void ); |
|
|
|
// Iterate children |
|
int GetNumEvents( void ); |
|
CChoreoEvent *GetEvent( int event ); |
|
|
|
// Manipulate children |
|
void AddEvent( CChoreoEvent *event ); |
|
void RemoveEvent( CChoreoEvent *event ); |
|
int FindEventIndex( CChoreoEvent *event ); |
|
void RemoveAllEvents(); |
|
|
|
CChoreoActor *GetActor( void ); |
|
void SetActor( CChoreoActor *actor ); |
|
|
|
void SetActive( bool active ); |
|
bool GetActive( void ) const; |
|
|
|
// Compute true start/end times for gesture events in this channel, factoring in "null" gestures as needed |
|
void ReconcileGestureTimes(); |
|
// Compute master/slave, count, endtime info for close captioning data |
|
void ReconcileCloseCaption(); |
|
|
|
bool IsMarkedForSave() const { return m_bMarkedForSave; } |
|
void SetMarkedForSave( bool mark ) { m_bMarkedForSave = mark; } |
|
|
|
void MarkForSaveAll( bool mark ); |
|
|
|
bool GetSortedCombinedEventList( char const *cctoken, CUtlRBTree< CChoreoEvent * >& sorted ); |
|
|
|
private: |
|
// Initialize fields |
|
void Init( void ); |
|
|
|
enum |
|
{ |
|
MAX_CHANNEL_NAME = 128, |
|
}; |
|
|
|
CChoreoActor *m_pActor; |
|
|
|
// Channels are just named |
|
char m_szName[ MAX_CHANNEL_NAME ]; |
|
|
|
// All of the events for this channel |
|
CUtlVector < CChoreoEvent * > m_Events; |
|
|
|
bool m_bActive; |
|
|
|
// Purely for save/load |
|
bool m_bMarkedForSave; |
|
}; |
|
|
|
#endif // CHOREOCHANNEL_H
|
|
|