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.
94 lines
3.1 KiB
94 lines
3.1 KiB
//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//===========================================================================//
|
|
|
|
#ifndef C_BASEANIMATINGOVERLAY_H
|
|
#define C_BASEANIMATINGOVERLAY_H
|
|
#pragma once
|
|
|
|
#include "c_baseanimating.h"
|
|
#include "toolframework/itoolframework.h"
|
|
|
|
// For shared code.
|
|
#define CBaseAnimatingOverlay C_BaseAnimatingOverlay
|
|
|
|
|
|
class C_BaseAnimatingOverlay : public C_BaseAnimating
|
|
{
|
|
DECLARE_CLASS( C_BaseAnimatingOverlay, C_BaseAnimating );
|
|
DECLARE_CLIENTCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
DECLARE_INTERPOLATION();
|
|
|
|
// Inherited from C_BaseAnimating
|
|
public:
|
|
virtual C_BaseAnimatingOverlay *GetBaseAnimatingOverlay() { return this; }
|
|
|
|
virtual void AccumulateLayers( IBoneSetup &boneSetup, BoneVector pos[], BoneQuaternion q[], float currentTime );
|
|
virtual void DoAnimationEvents( CStudioHdr *pStudioHdr );
|
|
virtual void GetRenderBounds( Vector& theMins, Vector& theMaxs );
|
|
virtual CStudioHdr *OnNewModel();
|
|
|
|
virtual bool Interpolate( float flCurrentTime );
|
|
|
|
#if defined( _PS3 )
|
|
virtual void AccumulateLayers_AddPoseCalls( IBoneSetup_PS3 &boneSetup, BoneVector pos[], BoneQuaternion q[], float currentTime );
|
|
#endif
|
|
|
|
|
|
public:
|
|
enum
|
|
{
|
|
MAX_OVERLAYS = 15,
|
|
};
|
|
|
|
C_BaseAnimatingOverlay();
|
|
CAnimationLayer* GetAnimOverlay( int i, bool bUseOrder = true );
|
|
void SetNumAnimOverlays( int num ); // This makes sure there is space for this # of layers.
|
|
int GetNumAnimOverlays() const;
|
|
void SetOverlayPrevEventCycle( int nSlot, float flValue );
|
|
|
|
void CheckInterpChanges( void );
|
|
void CheckForLayerPhysicsInvalidate( void );
|
|
|
|
virtual bool UpdateDispatchLayer( CAnimationLayer *pLayer, CStudioHdr *pWeaponStudioHdr, int iSequence );
|
|
void AccumulateDispatchedLayers( C_BaseAnimatingOverlay *pWeapon, CStudioHdr *pWeaponStudioHdr, IBoneSetup &boneSetup, BoneVector pos[], BoneQuaternion q[], float currentTime );
|
|
void RegenerateDispatchedLayers( IBoneSetup &boneSetup, BoneVector pos[], BoneQuaternion q[], float currentTime );
|
|
|
|
void AccumulateInterleavedDispatchedLayers( C_BaseAnimatingOverlay *pWeapon, IBoneSetup &boneSetup, BoneVector pos[], BoneQuaternion q[], float currentTime, bool bSetupInvisibleWeapon = false );
|
|
|
|
virtual void NotifyOnLayerChangeSequence( const CAnimationLayer* pLayer, const int nNewSequence ) {};
|
|
virtual void NotifyOnLayerChangeWeight( const CAnimationLayer* pLayer, const float flNewWeight ) {};
|
|
virtual void NotifyOnLayerChangeCycle( const CAnimationLayer* pLayer, const float flNewCycle ) {};
|
|
|
|
private:
|
|
void CheckForLayerChanges( CStudioHdr *hdr, float currentTime );
|
|
|
|
CUtlVector < CAnimationLayer > m_AnimOverlay;
|
|
CUtlVector < CInterpolatedVar< CAnimationLayer > > m_iv_AnimOverlay;
|
|
|
|
float m_flOverlayPrevEventCycle[ MAX_OVERLAYS ];
|
|
|
|
C_BaseAnimatingOverlay( const C_BaseAnimatingOverlay & ); // not defined, not accessible
|
|
|
|
friend void ResizeAnimationLayerCallback( void *pStruct, int offsetToUtlVector, int len );
|
|
};
|
|
|
|
|
|
inline void C_BaseAnimatingOverlay::SetOverlayPrevEventCycle( int nSlot, float flValue )
|
|
{
|
|
m_flOverlayPrevEventCycle[nSlot] = flValue;
|
|
}
|
|
|
|
EXTERN_RECV_TABLE(DT_BaseAnimatingOverlay);
|
|
|
|
|
|
#endif // C_BASEANIMATINGOVERLAY_H
|
|
|
|
|
|
|
|
|