CPropCombineBall


![]() |
---|
CPropCombineBall |
![]() |
Entities linked to this class
Inputs
Explode <FIELD_VOID> linked function: InputExplode
- description todo
FadeAndRespawn <FIELD_VOID> linked function: InputFadeAndRespawn
- description todo
Kill <FIELD_VOID> linked function: InputKill
- description todo
Socketed <FIELD_VOID> linked function: InputSocketed
- description todo
Fields
m_flLastBounceTime <FIELD_TIME>
m_flRadius <FIELD_FLOAT>
m_nState <FIELD_CHARACTER>
m_pGlowTrail <FIELD_CLASSPTR>
- Points to a CSpriteTrail
m_pHoldingSound <FIELD_CLASSPTR>
- Points to a CSoundPatch
m_bFiredGrabbedOutput <FIELD_BOOLEAN>
m_bEmit <FIELD_BOOLEAN>
m_bHeld <FIELD_BOOLEAN>
m_bLaunched <FIELD_BOOLEAN>
m_bStruckEntity <FIELD_BOOLEAN>
- Has hit an entity already (control accuracy)
m_bWeaponLaunched <FIELD_BOOLEAN>
- Means this was fired from the AR2
m_bForward <FIELD_BOOLEAN>
- Movement direction in ball spawner
m_flSpeed <FIELD_FLOAT>
m_flNextDamageTime <FIELD_TIME>
m_flLastCaptureTime <FIELD_TIME>
m_bCaptureInProgress <FIELD_BOOLEAN>
m_nBounceCount <FIELD_INTEGER>
m_nMaxBounces <FIELD_INTEGER>
m_bBounceDie <FIELD_BOOLEAN>
m_hSpawner <FIELD_EHANDLE>
- Points to a CFuncCombineBallSpawner
Think functions
ExplodeThink <FIELD_VOID>
WhizSoundThink <FIELD_VOID>
DieThink <FIELD_VOID>
DissolveThink <FIELD_VOID>
DissolveRampSoundThink <FIELD_VOID>
AnimThink <FIELD_VOID>
CaptureBySpawner <FIELD_VOID>
C++ definitions from
Source 2013 Multiplayer [edit]
Serverside
prob_combine_ball.h
//-----------------------------------------------------------------------------
// Looks for enemies, bounces a max # of times before it breaks
//-----------------------------------------------------------------------------
class CPropCombineBall : public CBaseAnimating, public CDefaultPlayerPickupVPhysics
{
public:
DECLARE_CLASS( CPropCombineBall, CBaseAnimating );
DECLARE_DATADESC();
DECLARE_SERVERCLASS();
virtual void Precache();
virtual void Spawn();
virtual void UpdateOnRemove();
void StopLoopingSounds();
virtual void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason );
virtual void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t Reason );
virtual void VPhysicsCollision( int index, gamevcollisionevent_t *pEvent );
virtual bool OverridePropdata();
virtual bool CreateVPhysics();
CFuncCombineBallSpawner *GetSpawner();
virtual void ExplodeThink( void );
// Override of IPlayerPickupVPhysics;
virtual bool ShouldPuntUseLaunchForces( PhysGunForce_t reason ) { return ( reason == PHYSGUN_FORCE_PUNTED ); }
void SetRadius( float flRadius );
void SetSpeed( float flSpeed ) { m_flSpeed = flSpeed; }
float GetSpeed( void ) const { return m_flSpeed; }
void CaptureBySpawner( );
bool IsBeingCaptured() const { return m_bCaptureInProgress; }
void ReplaceInSpawner( float flSpeed );
// Input
void InputExplode( inputdata_t &inputdata );
void InputFadeAndRespawn( inputdata_t &inputdata );
void InputKill( inputdata_t &inputdata );
void InputSocketed( inputdata_t &inputdata );
enum
{
STATE_NOT_THROWN = 0,
STATE_HOLDING,
STATE_THROWN,
STATE_LAUNCHED, //by a combine_ball launcher
};
void SetState( int state );
bool IsInField() const;
void StartWhizSoundThink( void );
void StartLifetime( float flDuration );
void ClearLifetime( );
void SetMass( float mass );
void SetWeaponLaunched( bool state = true ) { m_bWeaponLaunched = state; m_bLaunched = state; }
bool WasWeaponLaunched( void ) const { return m_bWeaponLaunched; }
bool WasFiredByNPC() const { return (GetOwnerEntity() && GetOwnerEntity()->IsNPC()); }
bool ShouldHitPlayer() const;
virtual CBasePlayer *HasPhysicsAttacker( float dt );
void SetSpawner( CFuncCombineBallSpawner *pSpawner ) { m_hSpawner = pSpawner; }
void NotifySpawnerOfRemoval( void );
float LastCaptureTime() const;
unsigned char GetState() const { return m_nState; }
int NumBounces( void ) const { return m_nBounceCount; }
void SetMaxBounces( int iBounces )
{
m_nMaxBounces = iBounces;
}
void SetEmitState( bool bEmit )
{
m_bEmit = bEmit;
}
void SetOriginalOwner( CBaseEntity *pEntity ) { m_hOriginalOwner = pEntity; }
CBaseEntity *GetOriginalOwner() { return m_hOriginalOwner; }
private:
void SetPlayerLaunched( CBasePlayer *pOwner );
float GetBallHoldDissolveTime();
float GetBallHoldSoundRampTime();
// Pow!
void DoExplosion( );
void StartAnimating( void );
void StopAnimating( void );
void SetBallAsLaunched( void );
void CollisionEventToTrace( int index, gamevcollisionevent_t *pEvent, trace_t &tr );
bool DissolveEntity( CBaseEntity *pEntity );
void OnHitEntity( CBaseEntity *pHitEntity, float flSpeed, int index, gamevcollisionevent_t *pEvent );
void DoImpactEffect( const Vector &preVelocity, int index, gamevcollisionevent_t *pEvent );
// Bounce inside the spawner:
void BounceInSpawner( float flSpeed, int index, gamevcollisionevent_t *pEvent );
bool IsAttractiveTarget( CBaseEntity *pEntity );
// Deflects the ball toward enemies in case of a collision
void DeflectTowardEnemy( float flSpeed, int index, gamevcollisionevent_t *pEvent );
// Is this something we can potentially dissolve?
bool IsHittableEntity( CBaseEntity *pHitEntity );
// Sucky.
void WhizSoundThink();
void DieThink();
void DissolveThink();
void DissolveRampSoundThink();
void AnimThink( void );
void FadeOut( float flDuration );
bool OutOfBounces( void ) const
{
return ( m_nState == STATE_LAUNCHED && m_nMaxBounces != 0 && m_nBounceCount >= m_nMaxBounces );
}
private:
int m_nBounceCount;
int m_nMaxBounces;
bool m_bBounceDie;
float m_flLastBounceTime;
bool m_bFiredGrabbedOutput;
bool m_bStruckEntity; // Has hit an entity already (control accuracy)
bool m_bWeaponLaunched; // Means this was fired from the AR2
bool m_bForward; // Movement direction in ball spawner
unsigned char m_nState;
bool m_bCaptureInProgress;
float m_flSpeed;
CSpriteTrail *m_pGlowTrail;
CSoundPatch *m_pHoldingSound;
float m_flNextDamageTime;
float m_flLastCaptureTime;
CHandle < CFuncCombineBallSpawner > m_hSpawner;
EHANDLE m_hOriginalOwner;
CNetworkVar( bool, m_bEmit );
CNetworkVar( bool, m_bHeld );
CNetworkVar( bool, m_bLaunched );
CNetworkVar( float, m_flRadius );
};
prop_combine_ball.cpp
BEGIN_DATADESC( CPropCombineBall )
DEFINE_FIELD( m_flLastBounceTime, FIELD_TIME ),
DEFINE_FIELD( m_flRadius, FIELD_FLOAT ),
DEFINE_FIELD( m_nState, FIELD_CHARACTER ),
DEFINE_FIELD( m_pGlowTrail, FIELD_CLASSPTR ),
DEFINE_SOUNDPATCH( m_pHoldingSound ),
DEFINE_FIELD( m_bFiredGrabbedOutput, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bEmit, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bHeld, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bLaunched, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bStruckEntity, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bWeaponLaunched, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bForward, FIELD_BOOLEAN ),
DEFINE_FIELD( m_flSpeed, FIELD_FLOAT ),
DEFINE_FIELD( m_flNextDamageTime, FIELD_TIME ),
DEFINE_FIELD( m_flLastCaptureTime, FIELD_TIME ),
DEFINE_FIELD( m_bCaptureInProgress, FIELD_BOOLEAN ),
DEFINE_FIELD( m_nBounceCount, FIELD_INTEGER ),
DEFINE_FIELD( m_nMaxBounces, FIELD_INTEGER ),
DEFINE_FIELD( m_bBounceDie, FIELD_BOOLEAN ),
DEFINE_FIELD( m_hSpawner, FIELD_EHANDLE ),
DEFINE_THINKFUNC( ExplodeThink ),
DEFINE_THINKFUNC( WhizSoundThink ),
DEFINE_THINKFUNC( DieThink ),
DEFINE_THINKFUNC( DissolveThink ),
DEFINE_THINKFUNC( DissolveRampSoundThink ),
DEFINE_THINKFUNC( AnimThink ),
DEFINE_THINKFUNC( CaptureBySpawner ),
DEFINE_INPUTFUNC( FIELD_VOID, "Explode", InputExplode ),
DEFINE_INPUTFUNC( FIELD_VOID, "FadeAndRespawn", InputFadeAndRespawn ),
DEFINE_INPUTFUNC( FIELD_VOID, "Kill", InputKill ),
DEFINE_INPUTFUNC( FIELD_VOID, "Socketed", InputSocketed ),
END_DATADESC()