CPhysicsProp
Class hierarchy |
---|
CPhysicsProp |
props.cpp
|
Contents
Entities linked to this class
Keyvalues / Inputs / Outputs
Keyfields
m_massScale <FIELD_FLOAT> (massscale)
m_inertiaScale <FIELD_FLOAT> (inertiascale)
m_damageType <FIELD_INTEGER> (Damagetype)
m_iszOverrideScript <FIELD_STRING> (overridescript)
m_damageToEnableMotion <FIELD_INTEGER> (damagetoenablemotion)
m_flForceToEnableMotion <FIELD_FLOAT> (forcetoenablemotion)
Input functions
EnableMotion <FIELD_VOID> linked function: InputEnableMotion
- description todo
DisableMotion <FIELD_VOID> linked function: InputDisableMotion
- description todo
Wake <FIELD_VOID> linked function: InputWake
- description todo
Sleep <FIELD_VOID> linked function: InputSleep
- description todo
DisableFloating <FIELD_VOID> linked function: InputDisableFloating
- description todo
Outputs
Todo: Convert to DEFINE_OUTPUT template.
m_OnAwakened
- OnAwakened
m_MotionEnabled
- OnMotionEnabled
m_OnPhysGunPickup
- OnPhysGunPickup
m_OnPhysGunOnlyPickup
- OnPhysGunOnlyPickup
m_OnPhysGunPunt
- OnPhysGunPunt
m_OnPhysGunDrop
- OnPhysGunDrop
m_OnPlayerUse
- OnPlayerUse
m_OnPlayerPickup
- OnPlayerPickup
m_OnOutOfWorld
- OnOutOfWorld
Fields
m_bThrownByPlayer <FIELD_BOOLEAN>
m_bFirstCollisionAfterLaunch <FIELD_BOOLEAN>
m_bAwake <FIELD_BOOLEAN>
Think function
FIELD_VOID <ClearFlagsThink>
C++ definitions from Source 2013 Multiplayer
[edit]Serverside
props.h
DECLARE_AUTO_LIST( IPhysicsPropAutoList );
class CPhysicsProp : public CBreakableProp, public IPhysicsPropAutoList
{
DECLARE_CLASS( CPhysicsProp, CBreakableProp );
DECLARE_SERVERCLASS();
public:
~CPhysicsProp();
CPhysicsProp( void )
{
}
void Spawn( void );
void Precache();
bool CreateVPhysics( void );
bool OverridePropdata( void );
virtual void VPhysicsUpdate( IPhysicsObject *pPhysics );
virtual void VPhysicsCollision( int index, gamevcollisionevent_t *pEvent );
void InputWake( inputdata_t &inputdata );
void InputSleep( inputdata_t &inputdata );
void InputEnableMotion( inputdata_t &inputdata );
void InputDisableMotion( inputdata_t &inputdata );
void InputDisableFloating( inputdata_t &inputdata );
void EnableMotion( void );
bool CanBePickedUpByPhyscannon( void );
void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason );
void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t reason );
bool GetPropDataAngles( const char *pKeyName, QAngle &vecAngles );
float GetCarryDistanceOffset( void );
int ObjectCaps();
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
void GetMassCenter( Vector *pMassCenter );
float GetMass() const;
void ClearFlagsThink( void );
virtual int OnTakeDamage( const CTakeDamageInfo &info );
int DrawDebugTextOverlays(void);
bool IsGib();
DECLARE_DATADESC();
// Specific interactions
void HandleAnyCollisionInteractions( int index, gamevcollisionevent_t *pEvent );
string_t GetPhysOverrideScript( void ) { return m_iszOverrideScript; }
float GetMassScale( void ) { return m_massScale; }
private:
// Compute impulse to apply to the enabled entity.
void ComputeEnablingImpulse( int index, gamevcollisionevent_t *pEvent );
COutputEvent m_MotionEnabled;
COutputEvent m_OnAwakened;
COutputEvent m_OnPhysGunPickup;
COutputEvent m_OnPhysGunPunt;
COutputEvent m_OnPhysGunOnlyPickup;
COutputEvent m_OnPhysGunDrop;
COutputEvent m_OnPlayerUse;
COutputEvent m_OnPlayerPickup;
COutputEvent m_OnOutOfWorld;
float m_massScale;
float m_inertiaScale;
int m_damageType;
string_t m_iszOverrideScript;
int m_damageToEnableMotion;
float m_flForceToEnableMotion;
bool m_bThrownByPlayer;
bool m_bFirstCollisionAfterLaunch;
protected:
CNetworkVar( bool, m_bAwake );
};
props.cpp
BEGIN_DATADESC( CPhysicsProp )
DEFINE_INPUTFUNC( FIELD_VOID, "EnableMotion", InputEnableMotion ),
DEFINE_INPUTFUNC( FIELD_VOID, "DisableMotion", InputDisableMotion ),
DEFINE_INPUTFUNC( FIELD_VOID, "Wake", InputWake ),
DEFINE_INPUTFUNC( FIELD_VOID, "Sleep", InputSleep ),
DEFINE_INPUTFUNC( FIELD_VOID, "DisableFloating", InputDisableFloating ),
DEFINE_FIELD( m_bAwake, FIELD_BOOLEAN ),
DEFINE_KEYFIELD( m_massScale, FIELD_FLOAT, "massscale" ),
DEFINE_KEYFIELD( m_inertiaScale, FIELD_FLOAT, "inertiascale" ),
DEFINE_KEYFIELD( m_damageType, FIELD_INTEGER, "Damagetype" ),
DEFINE_KEYFIELD( m_iszOverrideScript, FIELD_STRING, "overridescript" ),
DEFINE_KEYFIELD( m_damageToEnableMotion, FIELD_INTEGER, "damagetoenablemotion" ),
DEFINE_KEYFIELD( m_flForceToEnableMotion, FIELD_FLOAT, "forcetoenablemotion" ),
DEFINE_OUTPUT( m_OnAwakened, "OnAwakened" ),
DEFINE_OUTPUT( m_MotionEnabled, "OnMotionEnabled" ),
DEFINE_OUTPUT( m_OnPhysGunPickup, "OnPhysGunPickup" ),
DEFINE_OUTPUT( m_OnPhysGunOnlyPickup, "OnPhysGunOnlyPickup" ),
DEFINE_OUTPUT( m_OnPhysGunPunt, "OnPhysGunPunt" ),
DEFINE_OUTPUT( m_OnPhysGunDrop, "OnPhysGunDrop" ),
DEFINE_OUTPUT( m_OnPlayerUse, "OnPlayerUse" ),
DEFINE_OUTPUT( m_OnPlayerPickup, "OnPlayerPickup" ),
DEFINE_OUTPUT( m_OnOutOfWorld, "OnOutOfWorld" ),
DEFINE_FIELD( m_bThrownByPlayer, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bFirstCollisionAfterLaunch, FIELD_BOOLEAN ),
DEFINE_THINKFUNC( ClearFlagsThink ),
END_DATADESC()
IMPLEMENT_SERVERCLASS_ST( CPhysicsProp, DT_PhysicsProp )
SendPropBool( SENDINFO( m_bAwake ) ),
END_SEND_TABLE()
Clientside
c_physicsprop.h
class C_PhysicsProp : public C_BreakableProp
{
typedef C_BreakableProp BaseClass;
public:
DECLARE_CLIENTCLASS();
C_PhysicsProp();
~C_PhysicsProp();
virtual bool OnInternalDrawModel( ClientModelRenderInfo_t *pInfo );
protected:
// Networked vars.
bool m_bAwake;
bool m_bAwakeLastTime;
};
c_physicsprop.cpp
IMPLEMENT_CLIENTCLASS_DT(C_PhysicsProp, DT_PhysicsProp, CPhysicsProp)
RecvPropBool( RECVINFO( m_bAwake ) ),
END_RECV_TABLE()