45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Used to influence the initial force for a dying NPC's ragdoll.
|
|
// Passive entity. Just represents position in the world,
|
|
//radius, force
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
#pragma once
|
|
|
|
#ifndef CRAGDOLLMAGNET_H
|
|
#define CRAGDOLLMAGNET_H
|
|
|
|
#define SF_RAGDOLLMAGNET_BAR 0x00000002 // this is a bar magnet.
|
|
|
|
class CRagdollMagnet : public CPointEntity {
|
|
public:
|
|
DECLARE_CLASS(CRagdollMagnet, CPointEntity);
|
|
DECLARE_DATADESC();
|
|
|
|
Vector GetForceVector(CBaseEntity *pNPC);
|
|
float GetRadius(void) { return m_radius; }
|
|
Vector GetAxisVector(void) { return m_axis - GetAbsOrigin(); }
|
|
float DistToPoint(const Vector &vecPoint);
|
|
|
|
bool IsEnabled(void) { return !m_bDisabled; }
|
|
|
|
int IsBarMagnet(void) { return (m_spawnflags & SF_RAGDOLLMAGNET_BAR); }
|
|
|
|
static CRagdollMagnet *FindBestMagnet(CBaseEntity *pNPC);
|
|
|
|
void Enable(bool bEnable) { m_bDisabled = !bEnable; }
|
|
|
|
// Inputs
|
|
void InputEnable(inputdata_t &inputdata);
|
|
void InputDisable(inputdata_t &inputdata);
|
|
|
|
private:
|
|
bool m_bDisabled;
|
|
float m_radius;
|
|
float m_force;
|
|
Vector m_axis;
|
|
};
|
|
|
|
#endif // CRAGDOLLMAGNET_H
|