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.
82 lines
2.5 KiB
82 lines
2.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef C_ENTITY_DISSOLVE_H |
|
#define C_ENTITY_DISSOLVE_H |
|
|
|
#include "cbase.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Entity Dissolve, client-side implementation |
|
//----------------------------------------------------------------------------- |
|
class C_EntityDissolve : public C_BaseEntity, public IMotionEvent |
|
{ |
|
public: |
|
DECLARE_CLIENTCLASS(); |
|
DECLARE_CLASS( C_EntityDissolve, C_BaseEntity ); |
|
|
|
C_EntityDissolve( void ); |
|
|
|
// Inherited from C_BaseEntity |
|
virtual void GetRenderBounds( Vector& theMins, Vector& theMaxs ); |
|
virtual int DrawModel( int flags ); |
|
virtual bool ShouldDraw() { return true; } |
|
virtual void OnDataChanged( DataUpdateType_t updateType ); |
|
virtual void UpdateOnRemove( void ); |
|
|
|
virtual Vector GetEffectColor( void ) { return m_vEffectColor; } |
|
virtual void SetEffectColor( Vector v ) { m_vEffectColor = v; } |
|
|
|
// Inherited from IMotionEvent |
|
virtual simresult_e Simulate( IPhysicsMotionController *pController, IPhysicsObject *pObject, float deltaTime, Vector &linear, AngularImpulse &angular ); |
|
|
|
void SetupEmitter( void ); |
|
|
|
void ClientThink( void ); |
|
|
|
void SetServerLinkState( bool state ) { m_bLinkedToServerEnt = state; } |
|
|
|
float m_flStartTime; |
|
float m_flFadeOutStart; |
|
float m_flFadeOutLength; |
|
float m_flFadeOutModelStart; |
|
float m_flFadeOutModelLength; |
|
float m_flFadeInStart; |
|
float m_flFadeInLength; |
|
int m_nDissolveType; |
|
float m_flNextSparkTime; |
|
|
|
Vector m_vEffectColor; |
|
|
|
Vector m_vDissolverOrigin; |
|
int m_nMagnitude; |
|
|
|
bool m_bCoreExplode; |
|
|
|
protected: |
|
|
|
float GetFadeInPercentage( void ); // Fade in amount (entity fading to black) |
|
float GetFadeOutPercentage( void ); // Fade out amount (particles fading away) |
|
float GetModelFadeOutPercentage( void );// Mode fade out amount |
|
|
|
// Compute the bounding box's center, size, and basis |
|
void ComputeRenderInfo( mstudiobbox_t *pHitBox, const matrix3x4_t &hitboxToWorld, |
|
Vector *pVecAbsOrigin, Vector *pXVec, Vector *pYVec ); |
|
void BuildTeslaEffect( mstudiobbox_t *pHitBox, const matrix3x4_t &hitboxToWorld, bool bRandom, float flYawOffset ); |
|
|
|
void DoSparks( mstudiohitboxset_t *set, matrix3x4_t *hitboxbones[MAXSTUDIOBONES] ); |
|
|
|
private: |
|
|
|
CSmartPtr<CSimpleEmitter> m_pEmitter; |
|
|
|
bool m_bLinkedToServerEnt; |
|
IPhysicsMotionController *m_pController; |
|
}; |
|
|
|
#endif // C_ENTITY_DISSOLVE_H |
|
|
|
|