This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

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