aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/client/c_spotlight_end.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/client/c_spotlight_end.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/client/c_spotlight_end.cpp')
-rw-r--r--mp/src/game/client/c_spotlight_end.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/mp/src/game/client/c_spotlight_end.cpp b/mp/src/game/client/c_spotlight_end.cpp
new file mode 100644
index 00000000..19c13b4e
--- /dev/null
+++ b/mp/src/game/client/c_spotlight_end.cpp
@@ -0,0 +1,156 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "cbase.h"
+#include "dlight.h"
+#include "iefx.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+//##################################################################
+//
+// PlasmaBeamNode - generates plasma embers
+//
+//##################################################################
+class C_SpotlightEnd : public C_BaseEntity
+{
+public:
+ DECLARE_CLASS( C_SpotlightEnd, C_BaseEntity );
+ DECLARE_CLIENTCLASS();
+ DECLARE_INTERPOLATION();
+
+ C_SpotlightEnd();
+
+public:
+ void OnDataChanged(DataUpdateType_t updateType);
+ bool ShouldDraw();
+ void ClientThink( void );
+
+ virtual bool ShouldInterpolate();
+
+
+// Vector m_vSpotlightOrg;
+// Vector m_vSpotlightDir;
+ float m_flLightScale;
+ float m_Radius;
+
+private:
+ dlight_t* m_pDynamicLight;
+
+ //dlight_t* m_pModelLight;
+};
+
+//------------------------------------------------------------------------------
+// Purpose :
+// Input :
+// Output :
+//------------------------------------------------------------------------------
+C_SpotlightEnd::C_SpotlightEnd(void) : /*m_pModelLight(0), */m_pDynamicLight(0)
+{
+ m_flLightScale = 100;
+}
+
+//------------------------------------------------------------------------------
+// Purpose :
+// Input :
+// Output :
+//------------------------------------------------------------------------------
+void C_SpotlightEnd::OnDataChanged(DataUpdateType_t updateType)
+{
+ if ( updateType == DATA_UPDATE_CREATED )
+ {
+ SetNextClientThink(CLIENT_THINK_ALWAYS);
+ }
+}
+
+//------------------------------------------------------------------------------
+// Purpose :
+// Input :
+// Output :
+//------------------------------------------------------------------------------
+bool C_SpotlightEnd::ShouldDraw()
+{
+ return false;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: YWB: This is a hack, BaseClass::Interpolate skips this entity because model == NULL
+// We could do something like model = (model_t *)0x00000001, but that's probably more evil.
+// Input : currentTime -
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool C_SpotlightEnd::ShouldInterpolate()
+{
+ return true;
+}
+
+//------------------------------------------------------------------------------
+// Purpose :
+// Input :
+// Output :
+//------------------------------------------------------------------------------
+void C_SpotlightEnd::ClientThink(void)
+{
+ // If light scale is zero, don't draw light
+ if ( m_flLightScale <= 0 )
+ return;
+
+ ColorRGBExp32 color;
+ color.r = m_clrRender->r * m_clrRender->a;
+ color.g = m_clrRender->g * m_clrRender->a;
+ color.b = m_clrRender->b * m_clrRender->a;
+ color.exponent = 0;
+ if ( color.r == 0 && color.g == 0 && color.b == 0 )
+ return;
+
+ // Deal with the environment light
+ if ( !m_pDynamicLight || (m_pDynamicLight->key != index) )
+ {
+ m_pDynamicLight = effects->CL_AllocDlight( index );
+ assert (m_pDynamicLight);
+ }
+
+ //m_pDynamicLight->flags = DLIGHT_NO_MODEL_ILLUMINATION;
+ m_pDynamicLight->radius = m_flLightScale*3.0f;
+ m_pDynamicLight->origin = GetAbsOrigin() + Vector(0,0,5);
+ m_pDynamicLight->die = gpGlobals->curtime + 0.05f;
+ m_pDynamicLight->color = color;
+
+ /*
+ // For bumped lighting
+ VectorCopy (m_vSpotlightDir, m_pDynamicLight->m_Direction);
+
+ // Deal with the model light
+ if ( !m_pModelLight || (m_pModelLight->key != -index) )
+ {
+ m_pModelLight = effects->CL_AllocDlight( -index );
+ assert (m_pModelLight);
+ }
+
+ m_pModelLight->radius = m_Radius;
+ m_pModelLight->flags = DLIGHT_NO_WORLD_ILLUMINATION;
+ m_pModelLight->color.r = m_clrRender->r * m_clrRender->a;
+ m_pModelLight->color.g = m_clrRender->g * m_clrRender->a;
+ m_pModelLight->color.b = m_clrRender->b * m_clrRender->a;
+ m_pModelLight->color.exponent = 1;
+ m_pModelLight->origin = m_vSpotlightOrg;
+ m_pModelLight->m_InnerAngle = 6;
+ m_pModelLight->m_OuterAngle = 8;
+ m_pModelLight->die = gpGlobals->curtime + 0.05;
+ VectorCopy( m_vSpotlightDir, m_pModelLight->m_Direction );
+ */
+
+ SetNextClientThink( CLIENT_THINK_ALWAYS );
+}
+
+IMPLEMENT_CLIENTCLASS_DT(C_SpotlightEnd, DT_SpotlightEnd, CSpotlightEnd)
+ RecvPropFloat (RECVINFO(m_flLightScale)),
+ RecvPropFloat (RECVINFO(m_Radius)),
+// RecvPropVector (RECVINFO(m_vSpotlightOrg)),
+// RecvPropVector (RECVINFO(m_vSpotlightDir)),
+END_RECV_TABLE()