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.
139 lines
2.8 KiB
139 lines
2.8 KiB
//========= 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
|
|
|