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 © 1996-2005, 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
|