aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/ai_localnavigator.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/ai_localnavigator.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/ai_localnavigator.h')
-rw-r--r--mp/src/game/server/ai_localnavigator.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/mp/src/game/server/ai_localnavigator.h b/mp/src/game/server/ai_localnavigator.h
new file mode 100644
index 00000000..e264c054
--- /dev/null
+++ b/mp/src/game/server/ai_localnavigator.h
@@ -0,0 +1,72 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef AI_LOCALNAVIGATOR_H
+#define AI_LOCALNAVIGATOR_H
+
+#include "simtimer.h"
+#include "ai_component.h"
+#include "ai_movetypes.h"
+#include "ai_obstacle_type.h"
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+class CAI_PlaneSolver;
+class CAI_MoveProbe;
+
+//-----------------------------------------------------------------------------
+// CAI_LocalNavigator
+//
+// Purpose: Handles all the immediate tasks of navigation, independent of
+// path. Implements steering.
+//-----------------------------------------------------------------------------
+
+class CAI_LocalNavigator : public CAI_Component,
+ public CAI_ProxyMovementSink
+{
+public:
+ CAI_LocalNavigator(CAI_BaseNPC *pOuter);
+ virtual ~CAI_LocalNavigator();
+
+ void Init( IAI_MovementSink *pMovementServices );
+
+ //---------------------------------
+
+ AIMoveResult_t MoveCalc( AILocalMoveGoal_t *pResult, bool bPreviouslyValidated = false );
+ void ResetMoveCalculations();
+
+ //---------------------------------
+
+ void AddObstacle( const Vector &pos, float radius, AI_MoveSuggType_t type = AIMST_AVOID_OBJECT );
+ bool HaveObstacles();
+
+protected:
+
+ AIMoveResult_t MoveCalcRaw( AILocalMoveGoal_t *pResult, bool bOnlyCurThink );
+ bool MoveCalcDirect( AILocalMoveGoal_t *pMoveGoal, bool bOnlyCurThink, float *pDistClear, AIMoveResult_t *pResult );
+ bool MoveCalcSteer( AILocalMoveGoal_t *pMoveGoal, float distClear, AIMoveResult_t *pResult );
+ bool MoveCalcStop( AILocalMoveGoal_t *pMoveGoal, float distClear, AIMoveResult_t *pResult );
+
+ CAI_MoveProbe * GetMoveProbe() { return m_pMoveProbe; }
+ const CAI_MoveProbe *GetMoveProbe() const { return m_pMoveProbe; }
+
+private:
+
+ // --------------------------------
+
+ bool m_fLastWasClear;
+ AILocalMoveGoal_t m_LastMoveGoal;
+ CSimpleSimTimer m_FullDirectTimer;
+
+ CAI_PlaneSolver * m_pPlaneSolver;
+ CAI_MoveProbe * m_pMoveProbe;
+
+ DECLARE_SIMPLE_DATADESC();
+};
+
+#endif // AI_LOCALNAVIGATOR_H