49 lines
1.5 KiB
C++
49 lines
1.5 KiB
C++
#ifndef _INCLUDED_ASW_DRONE_MOVEMENT_H
|
|
#define _INCLUDED_ASW_DRONE_MOVEMENT_H
|
|
|
|
#include "tier0/vprof.h"
|
|
#include "ai_basenpc.h"
|
|
|
|
class CMoveData;
|
|
|
|
class CASW_Drone_Movement
|
|
{
|
|
public:
|
|
DECLARE_CLASS_NOBASE( CASW_Drone_Movement );
|
|
|
|
CASW_Drone_Movement();
|
|
|
|
void ProcessMovement( CAI_BaseNPC *pNPC, CMoveData *pMove, float flInterval);
|
|
void StepMove( Vector &vecDestination, trace_t &trace );
|
|
void WalkMove();
|
|
void CategorizePosition();
|
|
int TryMove( Vector *pFirstDest, trace_t *pFirstTrace );
|
|
int ClipVelocity( Vector& in, Vector& normal, Vector& out, float overbounce );
|
|
void SetGroundEntity( CBaseEntity *newGround );
|
|
void CheckVelocity();
|
|
void StartGravity();
|
|
void FinishGravity();
|
|
|
|
virtual const Vector& GetOuterMins() const;
|
|
virtual const Vector& GetOuterMaxs() const;
|
|
void TraceBBox( const Vector& start, const Vector& end, unsigned int fMask, int collisionGroup, trace_t& pm );
|
|
|
|
// Input/Output for this movement
|
|
CMoveData *mv;
|
|
CAI_BaseNPC *m_pNPC;
|
|
float m_flInterval; // time to simulate over
|
|
Vector m_LastHitWallNormal;
|
|
|
|
float m_surfaceFriction;
|
|
};
|
|
|
|
inline void CASW_Drone_Movement::TraceBBox( const Vector& start, const Vector& end, unsigned int fMask, int collisionGroup, trace_t& pm )
|
|
{
|
|
VPROF( "CASW_Drone_Movement::TraceBBox" );
|
|
|
|
Ray_t ray;
|
|
ray.Init( start, end, GetOuterMins(), GetOuterMaxs() );
|
|
UTIL_TraceRay( ray, fMask, m_pNPC, collisionGroup, &pm );
|
|
}
|
|
|
|
#endif // _INCLUDED_ASW_DRONE_MOVEMENT_H
|