hl2_src-leak-2017/src/game/server/tf/tf_taunt_prop.cpp

108 lines
2.9 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Play VCD on taunt prop
//
// $NoKeywords: $
//=============================================================================//
#include "cbase.h"
#include "basecombatcharacter.h"
#include "choreoevent.h"
#include "sceneentity.h"
#include "tf_taunt_prop.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
IMPLEMENT_SERVERCLASS_ST( CTFTauntProp, DT_TFTauntProp )
END_SEND_TABLE()
LINK_ENTITY_TO_CLASS( tf_taunt_prop, CTFTauntProp );
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CTFTauntProp::CTFTauntProp()
{
UseClientSideAnimation();
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CTFTauntProp::StartSceneEvent( CSceneEventInfo *info, CChoreoScene *scene, CChoreoEvent *event, CChoreoActor *actor, CBaseEntity *pTarget )
{
switch ( event->GetType() )
{
case CChoreoEvent::SEQUENCE:
case CChoreoEvent::GESTURE:
{
// Get the (gesture) sequence.
info->m_nSequence = LookupSequence( event->GetParameters() );
if ( info->m_nSequence < 0 )
return false;
SetSequence( info->m_nSequence );
SetPlaybackRate( 1.0f );
SetCycle( 0 );
ResetSequenceInfo();
if ( IsUsingClientSideAnimation() )
{
ResetClientsideFrame();
}
return true;
}
default:
return BaseClass::StartSceneEvent( info, scene, event, actor, pTarget );
}
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CTFTauntProp::ProcessSceneEvent( CSceneEventInfo *info, CChoreoScene *scene, CChoreoEvent *event )
{
// Only process sequences
if ( event->GetType() != CChoreoEvent::SEQUENCE )
return false;
return BaseClass::ProcessSceneEvent( info, scene, event );
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
float CTFTauntProp::PlayScene( const char *pszScene, float flDelay /*= 0.0f*/, AI_Response *response /*= NULL*/, IRecipientFilter *filter /*= NULL*/ )
{
if ( m_hScene.Get() )
{
StopScriptedScene( this, m_hScene );
m_hScene = NULL;
}
MDLCACHE_CRITICAL_SECTION();
return InstancedScriptedScene( this, pszScene, &m_hScene, flDelay, false, response, true, filter );
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CTFTauntProp::UpdateOnRemove()
{
if ( m_hScene.Get() )
{
StopScriptedScene( this, m_hScene );
m_hScene = NULL;
}
BaseClass::UpdateOnRemove();
}