You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
#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
|