gwnavruntime/pathfollower/iavoidancesolver.h Source File

iavoidancesolver.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 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 #pragma once
8 
11 
12 
13 namespace Kaim
14 {
15 class AvoidanceConfig;
16 class SpatializedPoint;
17 class AvoidanceWorkspace;
18 class Database;
19 class Gate;
20 
21 class AvoidanceSolverConfig
22 {
23  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_PathFollowing)
24 
25 public:
26  // ------------------------------ Functions -----------------------------
27 
28  AvoidanceSolverConfig()
29  : m_avoidanceConfig(nullptr)
30  , m_colliderSpatializedPoint(nullptr)
31  , m_workspace(nullptr)
32  , m_database(nullptr)
33  , m_deltaTime(0.016f)
34  , m_bot(nullptr)
35  {}
36 
37  AvoidanceSolverConfig(const AvoidanceConfig* avoidanceComputerConfig,
38  const SpatializedPoint* colliderSpatializedPoint,
39  AvoidanceWorkspace* workspace,
40  Database* database,
41  KyFloat32 simulationTimeInSeconds,
42  Bot* bot)
43  {
44  Init(avoidanceComputerConfig,
45  colliderSpatializedPoint,
46  workspace,
47  database,
48  simulationTimeInSeconds, bot);
49  }
50 
51  void Init(const AvoidanceConfig* avoidanceConfig,
52  const SpatializedPoint* colliderSpatializedPoint,
53  AvoidanceWorkspace* workspace,
54  Database* database,
55  KyFloat32 simulationTimeInSeconds,
56  Bot* bot)
57  {
58  m_avoidanceConfig = avoidanceConfig;
59  m_colliderSpatializedPoint = colliderSpatializedPoint;
60  m_workspace = workspace;
61  m_database = database;
62  m_deltaTime = simulationTimeInSeconds;
63  m_channelSectionPtr.Invalidate();
64  m_bot = bot;
65  }
66 
67 public:
68  // ---------------------------------- Usual Common Members ----------------------------------
69  const AvoidanceConfig* m_avoidanceConfig;
70  const SpatializedPoint* m_colliderSpatializedPoint;
71  AvoidanceWorkspace* m_workspace;
72  Database* m_database;
73  KyFloat32 m_deltaTime;
74  Bot* m_bot;
75 
76  // ---------------------------------- Channel Specific Members ----------------------------------
78 
79  ChannelSectionPtr m_channelSectionPtr;
80 };
81 
82 
84 class IAvoidanceSolver: public RefCountBase<IAvoidanceSolver, MemStat_PathFollowing>
85 {
87 
88 public:
89  // ------------------------------ Functions -----------------------------
90  IAvoidanceSolver() {}
91 
92  virtual ~IAvoidanceSolver() {}
93 
94  virtual AvoidanceResult Solve(
95  AvoidanceSolverConfig& config, const Vec2f& previousVelocity, const Vec2f& desiredVelocity,
96  Vec2f& outputVelocity, Vec2f& outputFrontDirection, bool& collide) = 0;
97 };
98 
99 } // namespace Kaim
100 
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
AvoidanceResult
Enumerates the possible results of a call to IAvoidanceComputer::Compute().
Definition: iavoidancecomputer.h:18
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
2d vector using KyFloat32.
Definition: vec2f.h:18
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Interface class for Avoidance solvers.
Definition: iavoidancesolver.h:84
float KyFloat32
float
Definition: types.h:32