58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
//========= Copyright c 1996-2008, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: the interface to the old and new physics ragdoll glue code between Entity and Physics systems
|
|
//
|
|
// $Workfile: $
|
|
// $Date: $
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef RAGDOLL_INTERFACE_H
|
|
#define RAGDOLL_INTERFACE_H
|
|
|
|
|
|
class C_BaseEntity;
|
|
class CStudioHdr;
|
|
struct mstudiobone_t;
|
|
class Vector;
|
|
class IPhysicsObject;
|
|
class CBoneAccessor;
|
|
|
|
abstract_class IRagdoll
|
|
{
|
|
public:
|
|
virtual ~IRagdoll() {}
|
|
|
|
virtual void RagdollBone( C_BaseEntity *ent, mstudiobone_t *pbones, int boneCount, bool *boneSimulated, CBoneAccessor &pBoneToWorld ) = 0;
|
|
virtual const Vector& GetRagdollOrigin( ) = 0;
|
|
virtual void GetRagdollBounds( Vector &mins, Vector &maxs ) = 0;
|
|
virtual int RagdollBoneCount() const = 0;
|
|
virtual IPhysicsObject *GetElement( int elementNum ) = 0;
|
|
virtual void DrawWireframe( void ) = 0;
|
|
virtual void VPhysicsUpdate( IPhysicsObject *pObject ) = 0;
|
|
virtual bool AllowStretch() const = 0;
|
|
virtual void BuildRagdollBounds( C_BaseEntity *ent ) = 0;
|
|
|
|
virtual bool SolvePenetrations(IPhysicsObject *pObj0, IPhysicsObject *pObj1) = 0;
|
|
virtual datamap_t *GetDataMap() = 0;
|
|
virtual void ResetRagdollSleepAfterTime(void) = 0;
|
|
virtual float GetLastVPhysicsUpdateTime() const = 0;
|
|
|
|
ragdoll_t *GetRagdoll( void ) {return NULL;} // the old ragdoll needs this for now
|
|
|
|
virtual void Init(
|
|
C_BaseEntity *ent,
|
|
CStudioHdr *pstudiohdr,
|
|
const Vector &forceVector,
|
|
int forceBone,
|
|
const matrix3x4_t *pDeltaBones0,
|
|
const matrix3x4_t *pDeltaBones1,
|
|
const matrix3x4_t *pCurrentBonePosition,
|
|
float boneDt ) = 0;
|
|
virtual bool IsValid()const = 0;
|
|
};
|
|
|
|
extern IRagdoll *CreateRagdoll();
|
|
extern IRagdoll *CreateRagdoll2();
|
|
|
|
#endif |