98 lines
2.9 KiB
C
98 lines
2.9 KiB
C
|
// Copyright (C) 2007 Id Software, Inc.
|
||
|
//
|
||
|
|
||
|
#ifndef __GAME_AFENTITY_H__
|
||
|
#define __GAME_AFENTITY_H__
|
||
|
|
||
|
#include "physics/Physics_AF.h"
|
||
|
#include "physics/Force_Constant.h"
|
||
|
#include "AF.h"
|
||
|
#include "AnimatedEntity.h"
|
||
|
|
||
|
/*
|
||
|
===============================================================================
|
||
|
|
||
|
idAFEntity_Base
|
||
|
|
||
|
===============================================================================
|
||
|
*/
|
||
|
|
||
|
class idAFEntity_Base : public idAnimatedEntity {
|
||
|
public:
|
||
|
CLASS_PROTOTYPE( idAFEntity_Base );
|
||
|
|
||
|
idAFEntity_Base( void );
|
||
|
virtual ~idAFEntity_Base( void );
|
||
|
|
||
|
void Spawn( void );
|
||
|
|
||
|
virtual void Think( void );
|
||
|
virtual void GetImpactInfo( idEntity *ent, int id, const idVec3 &point, impactInfo_t *info );
|
||
|
virtual void ApplyImpulse( idEntity *ent, int id, const idVec3 &point, const idVec3 &impulse );
|
||
|
virtual void AddForce( idEntity *ent, int id, const idVec3 &point, const idVec3 &force );
|
||
|
virtual bool Collide( const trace_t &collision, const idVec3 &velocity, int bodyId );
|
||
|
virtual bool GetPhysicsToVisualTransform( idVec3 &origin, idMat3 &axis );
|
||
|
virtual bool UpdateAnimationControllers( void );
|
||
|
|
||
|
virtual bool LoadAF( void );
|
||
|
bool IsActiveAF( void ) const { return af.IsActive(); }
|
||
|
const char * GetAFName( void ) const { return af.GetName(); }
|
||
|
idPhysics_AF * GetAFPhysics( void ) { return af.GetPhysics(); }
|
||
|
const idAF& GetAF( void ) { return af; }
|
||
|
|
||
|
void SetCombatModel( void );
|
||
|
// contents of combatModel can be set to 0 or re-enabled (mp)
|
||
|
void SetCombatContents( bool enable );
|
||
|
virtual void LinkCombat( void );
|
||
|
virtual void UnLinkCombat( void );
|
||
|
|
||
|
int BodyForClipModelId( int id ) const;
|
||
|
|
||
|
void SaveState( idDict &args ) const;
|
||
|
void LoadState( const idDict &args );
|
||
|
|
||
|
virtual void Unbind( void );
|
||
|
virtual bool InitBind( idEntity *master );
|
||
|
void AddBindConstraints( void );
|
||
|
void RemoveBindConstraints( void );
|
||
|
|
||
|
virtual void ShowEditingDialog( void );
|
||
|
|
||
|
static void DropAFs( idEntity *ent, const char *type, idList<idEntity *> *list );
|
||
|
|
||
|
protected:
|
||
|
idAF af; // articulated figure
|
||
|
int combatModelContents;
|
||
|
idVec3 spawnOrigin; // spawn origin
|
||
|
idMat3 spawnAxis; // rotation axis used when spawned
|
||
|
int nextSoundTime; // next time this can make a sound
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
===============================================================================
|
||
|
|
||
|
idAFEntity_Generic
|
||
|
|
||
|
===============================================================================
|
||
|
*/
|
||
|
|
||
|
class idAFEntity_Generic : public idAFEntity_Base {
|
||
|
public:
|
||
|
CLASS_PROTOTYPE( idAFEntity_Generic );
|
||
|
|
||
|
idAFEntity_Generic( void );
|
||
|
~idAFEntity_Generic( void );
|
||
|
|
||
|
void Spawn( void );
|
||
|
|
||
|
virtual void Think( void );
|
||
|
void KeepRunningPhysics( void ) { keepRunningPhysics = true; }
|
||
|
|
||
|
private:
|
||
|
void Event_Activate( idEntity *activator );
|
||
|
|
||
|
bool keepRunningPhysics;
|
||
|
};
|
||
|
|
||
|
#endif /* !__GAME_AFENTITY_H__ */
|