//========= 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