This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/client/c_entitydissolve.h
2020-08-04 13:13:01 -04:00

86 lines
2.7 KiB
C++

//========= 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