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.
77 lines
2.4 KiB
77 lines
2.4 KiB
//===== Copyright © 1996-2005, 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, const RenderableInstance_t &instance );
|
|
virtual bool ShouldDraw() { return true; }
|
|
virtual void OnDataChanged( DataUpdateType_t updateType );
|
|
virtual void UpdateOnRemove( void );
|
|
|
|
// 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_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
|
|
|