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.
120 lines
2.9 KiB
120 lines
2.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef SCENEENTITY_SHARED_H |
|
#define SCENEENTITY_SHARED_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#if defined( CLIENT_DLL ) |
|
#define CBaseFlex C_BaseFlex |
|
#define CSceneEntity C_SceneEntity |
|
#endif |
|
|
|
#include "iscenetokenprocessor.h" |
|
|
|
class CBaseFlex; |
|
|
|
class CChoreoEvent; |
|
class CChoreoScene; |
|
class CChoreoActor; |
|
class CSceneEntity; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: One of a number of currently playing scene events for this actor |
|
//----------------------------------------------------------------------------- |
|
// FIXME: move this, it's only used in in baseflex and baseactor |
|
class CSceneEventInfo |
|
{ |
|
public: |
|
CSceneEventInfo() |
|
: |
|
m_pEvent( 0 ), |
|
m_pScene( 0 ), |
|
m_pActor( 0 ), |
|
m_bStarted( false ), |
|
m_iLayer( -1 ), |
|
m_iPriority( 0 ), |
|
m_nSequence( 0 ), |
|
m_bIsGesture( false ), |
|
m_flWeight( 0.0f ), |
|
m_hTarget(), |
|
m_bIsMoving( false ), |
|
m_bHasArrived( false ), |
|
m_flInitialYaw( 0.0f ), |
|
m_flTargetYaw( 0.0f ), |
|
m_flFacingYaw( 0.0f ), |
|
m_nType( 0 ), |
|
m_flNext( 0.0f ), |
|
m_bClientSide( false ) |
|
{ |
|
} |
|
|
|
// The event handle of the current scene event |
|
CChoreoEvent *m_pEvent; |
|
|
|
// Current Scene |
|
CChoreoScene *m_pScene; |
|
|
|
// Current actor |
|
CChoreoActor *m_pActor; |
|
|
|
// Set after the first time the event has been configured ( allows |
|
// bumping markov index only at start of event playback, not every frame ) |
|
bool m_bStarted; |
|
|
|
public: |
|
// EVENT local data... |
|
// FIXME: Evil, make accessors or figure out better place |
|
// FIXME: This won't work, scenes don't save and restore... |
|
int m_iLayer; |
|
int m_iPriority; |
|
int m_nSequence; |
|
bool m_bIsGesture; |
|
float m_flWeight; // used for suppressions of posture while moving |
|
|
|
// movement, faceto targets? |
|
EHANDLE m_hTarget; |
|
bool m_bIsMoving; |
|
bool m_bHasArrived; |
|
float m_flInitialYaw; |
|
float m_flTargetYaw; |
|
float m_flFacingYaw; |
|
|
|
// generic AI events |
|
int m_nType; |
|
float m_flNext; |
|
|
|
// is this event only client side? |
|
bool m_bClientSide; |
|
|
|
void InitWeight( CBaseFlex *pActor ); |
|
float UpdateWeight( CBaseFlex *pActor ); |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Helper for parsing scene data file |
|
//----------------------------------------------------------------------------- |
|
class CSceneTokenProcessor : public ISceneTokenProcessor |
|
{ |
|
public: |
|
const char *CurrentToken( void ); |
|
bool GetToken( bool crossline ); |
|
bool TokenAvailable( void ); |
|
void Error( PRINTF_FORMAT_STRING const char *fmt, ... ); |
|
void SetBuffer( char *buffer ); |
|
private: |
|
const char *m_pBuffer; |
|
char m_szToken[ 1024 ]; |
|
}; |
|
|
|
extern CSceneTokenProcessor g_TokenProcessor; |
|
|
|
void Scene_Printf( PRINTF_FORMAT_STRING const char *pFormat, ... ); |
|
extern ConVar scene_clientflex; |
|
|
|
#endif // SCENEENTITY_SHARED_H
|
|
|