8 #ifndef Navigation_AvoidanceComputer_H
9 #define Navigation_AvoidanceComputer_H
23 class SpatializedCylinder;
24 class SpatializedPoint;
25 class AvoidanceComputer;
63 void SetAvoidanceSolver(Ptr<
IAvoidanceSolver> avoidanceSolver) { m_avoidanceSolver = avoidanceSolver; }
64 void SetAvoidanceFilter(Ptr<IAvoidanceFilter> avoidanceFilter) { m_avoidanceFilter = avoidanceFilter; }
66 virtual AvoidanceResult Compute(Bot& bot,
KyFloat32 simulationTimeInSeconds,
KyFloat32 desiredSpeed,
const Vec2f& movingDirection, Vec2f& avoidanceVelocity, Vec2f& outputFrontDirection,
bool& collide);
69 friend class AvoidanceComputerCollectorFilter;
71 void CollectSpatializedPoints(Bot& bot);
72 void SetupAvoidanceWorkspace(
const Bot& bot,
KyFloat32 desiredSpeed,
const Vec2f& desiredMovingDirection);
73 void FillAvoidanceWorkspace(
const Bot& bot);
75 AvoidanceResult SolveAvoidanceWorkspace(Bot& bot,
KyFloat32 simulationTimeInSeconds,
KyFloat32 desiredSpeed,
const Vec2f& movingDirection, Vec2f& outputAvoidanceVelocity, Vec2f& outputFrontDirection,
bool& collide);
77 void UpdateForcePassage(Bot& bot,
KyFloat32 simulationTimeInSeconds,
const Vec2f& desiredVelocity,
78 AvoidanceSolverConfig& solverConfig,
AvoidanceResult& solverResult, Vec2f& avoidanceVelocity,
bool collide);
80 bool DoesCollectionQueryNeedToBeUpdated(
const Bot& bot);
81 const SpatializedCylinder* GetSpatializedCylinderFromSpatializedPoint(SpatializedPoint* spatializedPoint);
82 AvoidanceWorkspaceAddColliderResult AddColliderToVOWorkspace(
const Bot& bot,
const AvoidanceConfig& avoidanceConfig, AvoidanceWorkspace& avoidanceWorkspace,
const SpatializedCylinder& colliderCylinder,
const KyFloat32 databaseRadiusPrecision);
84 void SetupSolverConfig(AvoidanceSolverConfig&,
const Bot&);
86 AvoidanceResult ComputeAvoidanceVelocity( Bot& bot,
KyFloat32 simulationTimeInSeconds,
KyFloat32 desiredSpeed,
const Vec2f& desiredMovingDirection, Vec2f& avoidanceVelocity, Vec2f& outputFrontDirection,
bool& collide);
90 virtual bool IsComputationRequiredThisFrame(Bot* bot,
KyFloat32 simulationTimeInSeconds);
93 Ptr<IAvoidanceSolver> m_avoidanceSolver;
94 SpatializedPointCollectorInAABBQuery<AvoidanceComputerCollectorFilter> m_collectQuery;
95 Ptr<IAvoidanceFilter> m_avoidanceFilter;
101 #endif // Navigation_AvoidanceComputer_H
This class is the world element that represent an active character in Gameware Navigation.
Definition: bot.h:150
#define KY_NULL
Null value.
Definition: types.h:247
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:387
AvoidanceResult
Enumerates the possible results of a call to IAvoidanceComputer::Compute().
Definition: iavoidancecomputer.h:20
This class compute collision-free trajectories.
Definition: avoidancecomputer.h:63
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
This interface class defines the way avoidance is computed.
Definition: iavoidancecomputer.h:38
Class used to filter potential colliders in AvoidanceComputer at SpatializedPoint collection step...
Definition: avoidancecomputer.h:31
Internal class used for point spatialization in NavData.
Definition: spatializedpoint.h:171
Interface class for Avoidance solvers.
Definition: iavoidancesolver.h:100
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43