gwnavruntime/pathfollower/iavoidancesolver.h Source File

iavoidancesolver.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 // primary contact: MUBI - secondary contact: LAPA
8 #ifndef Navigation_IAvoidanceSolver_H
9 #define Navigation_IAvoidanceSolver_H
10 
13 
14 
15 namespace Kaim
16 {
17 class AvoidanceConfig;
18 class SpatializedPoint;
19 class AvoidanceWorkspace;
20 class Database;
21 class Gate;
22 
23 class AvoidanceSolverConfig
24 {
25  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_PathFollowing)
26 
27 public:
28  // ---------------------------------- Public Member Functions ----------------------------------
29 
30  AvoidanceSolverConfig()
31  : m_avoidanceConfig(KY_NULL)
32  , m_colliderSpatializedPoint(KY_NULL)
33  , m_workspace(KY_NULL)
34  , m_database(KY_NULL)
35  , m_deltaTime(0.016f)
36  , m_bot(KY_NULL)
37  {}
38 
39  AvoidanceSolverConfig(const AvoidanceConfig* avoidanceComputerConfig,
40  const SpatializedPoint* colliderSpatializedPoint,
41  AvoidanceWorkspace* workspace,
42  Database* database,
43  KyFloat32 simulationTimeInSeconds,
44  Bot* bot)
45  {
46  Init(avoidanceComputerConfig,
47  colliderSpatializedPoint,
48  workspace,
49  database,
50  simulationTimeInSeconds, bot);
51  }
52 
53  void Init(const AvoidanceConfig* avoidanceConfig,
54  const SpatializedPoint* colliderSpatializedPoint,
55  AvoidanceWorkspace* workspace,
56  Database* database,
57  KyFloat32 simulationTimeInSeconds,
58  Bot* bot)
59  {
60  m_avoidanceConfig = avoidanceConfig;
61  m_colliderSpatializedPoint = colliderSpatializedPoint;
62  m_workspace = workspace;
63  m_database = database;
64  m_deltaTime = simulationTimeInSeconds;
65  m_channelSectionPtr.Invalidate();
66  m_bot = bot;
67  }
68 
69 public:
70  // ---------------------------------- Usual Common Members ----------------------------------
71  const AvoidanceConfig* m_avoidanceConfig;
72  const SpatializedPoint* m_colliderSpatializedPoint;
73  AvoidanceWorkspace* m_workspace;
74  Database* m_database;
75  KyFloat32 m_deltaTime;
76  Bot* m_bot;
77 
78  // ---------------------------------- Channel Specific Members ----------------------------------
80 
81  ChannelSectionPtr m_channelSectionPtr;
82 };
83 
84 
86 class IAvoidanceSolver: public RefCountBase<IAvoidanceSolver, MemStat_PathFollowing>
87 {
88  KY_CLASS_WITHOUT_COPY(IAvoidanceSolver)
89 
90 public:
91  // ---------------------------------- Public Member Functions ----------------------------------
92  IAvoidanceSolver() {}
93 
94  virtual ~IAvoidanceSolver() {}
95 
96  virtual AvoidanceResult Solve(
97  AvoidanceSolverConfig& config, const Vec2f& previousVelocity, const Vec2f& desiredVelocity,
98  Vec2f& outputVelocity, Vec2f& outputFrontDirection, bool& collide) = 0;
99 };
101 } // namespace Kaim
102 
103 #endif // Navigation_IAvoidanceSolver_H
#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
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43