diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/client/c_physicsprop.cpp | |
| download | source-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_physicsprop.cpp')
| -rw-r--r-- | mp/src/game/client/c_physicsprop.cpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/mp/src/game/client/c_physicsprop.cpp b/mp/src/game/client/c_physicsprop.cpp new file mode 100644 index 00000000..95e6dd8a --- /dev/null +++ b/mp/src/game/client/c_physicsprop.cpp @@ -0,0 +1,95 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+#include "cbase.h"
+#include "model_types.h"
+#include "vcollide.h"
+#include "vcollide_parse.h"
+#include "solidsetdefaults.h"
+#include "bone_setup.h"
+#include "engine/ivmodelinfo.h"
+#include "physics.h"
+#include "view.h"
+#include "clienteffectprecachesystem.h"
+#include "c_physicsprop.h"
+#include "tier0/vprof.h"
+#include "ivrenderview.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+IMPLEMENT_CLIENTCLASS_DT(C_PhysicsProp, DT_PhysicsProp, CPhysicsProp)
+ RecvPropBool( RECVINFO( m_bAwake ) ),
+END_RECV_TABLE()
+
+ConVar r_PhysPropStaticLighting( "r_PhysPropStaticLighting", "1" );
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+C_PhysicsProp::C_PhysicsProp( void )
+{
+ m_pPhysicsObject = NULL;
+ m_takedamage = DAMAGE_YES;
+
+ // default true so static lighting will get recomputed when we go to sleep
+ m_bAwakeLastTime = true;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+C_PhysicsProp::~C_PhysicsProp( void )
+{
+}
+
+
+// @MULTICORE (toml 9/18/2006): this visualization will need to be implemented elsewhere
+ConVar r_visualizeproplightcaching( "r_visualizeproplightcaching", "0" );
+
+//-----------------------------------------------------------------------------
+// Purpose: Draws the object
+// Input : flags -
+//-----------------------------------------------------------------------------
+bool C_PhysicsProp::OnInternalDrawModel( ClientModelRenderInfo_t *pInfo )
+{
+ CreateModelInstance();
+
+ if ( r_PhysPropStaticLighting.GetBool() && m_bAwakeLastTime != m_bAwake )
+ {
+ if ( m_bAwakeLastTime && !m_bAwake )
+ {
+ // transition to sleep, bake lighting now, once
+ if ( !modelrender->RecomputeStaticLighting( GetModelInstance() ) )
+ {
+ // not valid for drawing
+ return false;
+ }
+
+ if ( r_visualizeproplightcaching.GetBool() )
+ {
+ float color[] = { 0.0f, 1.0f, 0.0f, 1.0f };
+ render->SetColorModulation( color );
+ }
+ }
+ else if ( r_visualizeproplightcaching.GetBool() )
+ {
+ float color[] = { 1.0f, 0.0f, 0.0f, 1.0f };
+ render->SetColorModulation( color );
+ }
+ }
+
+ if ( !m_bAwake && r_PhysPropStaticLighting.GetBool() )
+ {
+ // going to sleep, have static lighting
+ pInfo->flags |= STUDIO_STATIC_LIGHTING;
+ }
+
+ // track state
+ m_bAwakeLastTime = m_bAwake;
+
+ return true;
+}
|