From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/shared/effect_dispatch_data.h | 139 ++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 mp/src/game/shared/effect_dispatch_data.h (limited to 'mp/src/game/shared/effect_dispatch_data.h') diff --git a/mp/src/game/shared/effect_dispatch_data.h b/mp/src/game/shared/effect_dispatch_data.h new file mode 100644 index 00000000..4610ab35 --- /dev/null +++ b/mp/src/game/shared/effect_dispatch_data.h @@ -0,0 +1,139 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//===========================================================================// + +#ifndef EFFECT_DISPATCH_DATA_H +#define EFFECT_DISPATCH_DATA_H +#ifdef _WIN32 +#pragma once +#endif + +#include "particle_parse.h" + +#ifdef CLIENT_DLL + + #include "dt_recv.h" + #include "client_class.h" + + EXTERN_RECV_TABLE( DT_EffectData ); + +#else + + #include "dt_send.h" + #include "server_class.h" + + EXTERN_SEND_TABLE( DT_EffectData ); + +#endif + +// NOTE: These flags are specifically *not* networked; so it's placed above the max effect flag bits +#define EFFECTDATA_NO_RECORD 0x80000000 + +#define MAX_EFFECT_FLAG_BITS 8 + +#define CUSTOM_COLOR_CP1 9 +#define CUSTOM_COLOR_CP2 10 + +// This is the class that holds whatever data we're sending down to the client to make the effect. +class CEffectData +{ +public: + Vector m_vOrigin; + Vector m_vStart; + Vector m_vNormal; + QAngle m_vAngles; + int m_fFlags; +#ifdef CLIENT_DLL + ClientEntityHandle_t m_hEntity; +#else + int m_nEntIndex; +#endif + float m_flScale; + float m_flMagnitude; + float m_flRadius; + int m_nAttachmentIndex; + short m_nSurfaceProp; + + // Some TF2 specific things + int m_nMaterial; + int m_nDamageType; + int m_nHitBox; + + unsigned char m_nColor; + + // Color customizability + bool m_bCustomColors; + te_tf_particle_effects_colors_t m_CustomColors; + + bool m_bControlPoint1; + te_tf_particle_effects_control_point_t m_ControlPoint1; + +// Don't mess with stuff below here. DispatchEffect handles all of this. +public: + CEffectData() + { + m_vOrigin.Init(); + m_vStart.Init(); + m_vNormal.Init(); + m_vAngles.Init(); + + m_fFlags = 0; +#ifdef CLIENT_DLL + m_hEntity = INVALID_EHANDLE_INDEX; +#else + m_nEntIndex = 0; +#endif + m_flScale = 1.f; + m_nAttachmentIndex = 0; + m_nSurfaceProp = 0; + + m_flMagnitude = 0.0f; + m_flRadius = 0.0f; + + m_nMaterial = 0; + m_nDamageType = 0; + m_nHitBox = 0; + + m_nColor = 0; + + m_bCustomColors = false; + m_CustomColors.m_vecColor1.Init(); + m_CustomColors.m_vecColor2.Init(); + + m_bControlPoint1 = false; + m_ControlPoint1.m_eParticleAttachment = PATTACH_ABSORIGIN; + m_ControlPoint1.m_vecOffset.Init(); + } + + int GetEffectNameIndex() { return m_iEffectName; } + +#ifdef CLIENT_DLL + IClientRenderable *GetRenderable() const; + C_BaseEntity *GetEntity() const; + int entindex() const; +#endif + +private: + + #ifdef CLIENT_DLL + DECLARE_CLIENTCLASS_NOBASE() + #else + DECLARE_SERVERCLASS_NOBASE() + #endif + + int m_iEffectName; // Entry in the EffectDispatch network string table. The is automatically handled by DispatchEffect(). +}; + + +#define MAX_EFFECT_DISPATCH_STRING_BITS 10 +#define MAX_EFFECT_DISPATCH_STRINGS ( 1 << MAX_EFFECT_DISPATCH_STRING_BITS ) + +#ifdef CLIENT_DLL +bool SuppressingParticleEffects(); +void SuppressParticleEffects( bool bSuppress ); +#endif + +#endif // EFFECT_DISPATCH_DATA_H -- cgit v1.2.3