CPhysicsProp: Difference between revisions
Jump to navigation
Jump to search
C++ definitions from
No edit summary |
Gameplayer (talk | contribs) No edit summary |
||
(8 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{CD|CPhysicsProp|file1=1}} | {{CD|CPhysicsProp|file1=1}} | ||
{{Linked entities|prop_physics|physics_prop|prop_physics_override}} | {{Linked entities|prop_physics|physics_prop|prop_physics_override}} | ||
==Keyvalues / Inputs / Outputs== | |||
=== Keyfields === | |||
{{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}} | |||
=== Input functions === | |||
{{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}} | |||
=== Outputs === | |||
{{todo|Convert to DEFINE_OUTPUT template.}} | |||
{{O|m_OnAwakened|OnAwakened}} | |||
{{O|m_MotionEnabled|OnMotionEnabled}} | |||
{{O|m_OnPhysGunPickup|OnPhysGunPickup}} | |||
{{O|m_OnPhysGunOnlyPickup|OnPhysGunOnlyPickup}} | |||
{{O|m_OnPhysGunPunt|OnPhysGunPunt}} | |||
{{O|m_OnPhysGunDrop|OnPhysGunDrop}} | |||
{{O|m_OnPlayerUse|OnPlayerUse}} | |||
{{O|m_OnPlayerPickup|OnPlayerPickup}} | |||
{{O|m_OnOutOfWorld|OnOutOfWorld}} | |||
== Fields == | |||
{{DEFINE_FIELD|m_bThrownByPlayer|FIELD_BOOLEAN}} | |||
{{DEFINE_FIELD|m_bFirstCollisionAfterLaunch|FIELD_BOOLEAN}} | |||
{{DEFINE_FIELD|m_bAwake|FIELD_BOOLEAN}} | |||
=== Think function === | |||
{{DEFINE_FIELD|FIELD_VOID|ClearFlagsThink}} <!-- DEFINE_THINKFUNC --> | |||
{{Class def section}} | |||
== See Also == | |||
* [[CDynamicProp]] | |||
{{See also netprops}} |
Latest revision as of 02:54, 28 September 2024
![]() |
---|
CPhysicsProp |
![]() |
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()