source-sdk-2013-mapbase/sp/src/game/server/CRagdollMagnet.h

58 lines
1.5 KiB
C
Raw Normal View History

2013-12-03 07:31:46 +04:00
//========= 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();
#ifdef MAPBASE
Vector GetForceVector( CBaseEntity *pNPC, int *pBone = NULL );
#else
2013-12-03 07:31:46 +04:00
Vector GetForceVector( CBaseEntity *pNPC );
#endif
2013-12-03 07:31:46 +04:00
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 );
#ifdef MAPBASE
const char *BoneTarget() { return STRING(m_BoneTarget); }
COutputVector m_OnUsed;
#endif
2013-12-03 07:31:46 +04:00
private:
bool m_bDisabled;
float m_radius;
float m_force;
Vector m_axis;
#ifdef MAPBASE
string_t m_BoneTarget;
#endif
2013-12-03 07:31:46 +04:00
};
2013-06-27 02:22:04 +04:00
#endif //CRAGDOLLMAGNET_H