gwnavruntime/pathfollower/avoidanceworkspace.h Source File

avoidanceworkspace.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 
13 
14 namespace Kaim
15 {
16 class Bot;
17 
18 // We want theses arrays to work on contiguous memory, never to release it
19 typedef KyArrayPOD<AvoidanceCollider, MemStat_PathFollowing, Kaim::ArrayConstPolicy<0, 16, true> > ColliderArray;
20 
23 {
24  AvoidanceWorkspace_ColliderAdded = 0,
25  AvoidanceWorkspace_ColliderIgnored
26 };
27 
28 
35 {
36  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_PathFollowing)
37 
38 public:
39  // ------------------------------ Functions -----------------------------
40 
42  : m_doSendVisualDebugBlob(true)
43  , m_visualDebugAltitude(0.0f)
44  {}
45 
48  void Reset(const AvoidanceCollider& rootCollider, KyFloat32 visualDebugAltitude = 0.0f);
49 
57 
59  KyFloat32 ComputeAvoidanceScore(const Vec2f& candidateVelocity, const KyFloat32 safetyDistance, const KyFloat32 timeHorizon, KyFloat32& collisionTime, KyInt32& colliderIndex) const;
60 
61  // ------------------------------ Data -----------------------------
62 
63  AvoidanceCollider m_rootCollider;
64  ColliderArray m_colliders;
65  ColliderArray m_ignoredColliders;
66 
67 public: // internal
68  // when true and debugging a Bot in VisualDebugLOD_Maximal, activate the sending of
69  // a display list representing the avoidance workspace
70  bool m_doSendVisualDebugBlob;
71  KyFloat32 m_visualDebugAltitude;
72 };
73 
74 } // namespace Kaim
75 
KyFloat32 ComputeAvoidanceScore(const Vec2f &candidateVelocity, const KyFloat32 safetyDistance, const KyFloat32 timeHorizon, KyFloat32 &collisionTime, KyInt32 &colliderIndex) const
Computes the avoidance score.
Definition: avoidanceworkspace.cpp:74
AvoidanceWorkspace aggregates at once:
Definition: avoidanceworkspace.h:34
ColliderArray m_colliders
The Bot collider for which the AvoidanceWorkspace computes a velocity.
Definition: avoidanceworkspace.h:64
Set of parameters used to configure AvoidanceComputer.
Definition: avoidanceconfig.h:106
void Reset(const AvoidanceCollider &rootCollider, KyFloat32 visualDebugAltitude=0.0f)
Reset the workspace and prepare it for a given root collider.
Definition: avoidanceworkspace.cpp:15
AvoidanceWorkspaceAddColliderResult AddCollider(const AvoidanceConfig &config, AvoidanceCollider &collider)
Compute the time to collision and filters accordingly:
Definition: avoidanceworkspace.cpp:23
#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
A Collider is a 2D circular particle with a linear velocity.
Definition: avoidancecollider.h:16
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
std::int32_t KyInt32
int32_t
Definition: types.h:24
float KyFloat32
float
Definition: types.h:32
AvoidanceWorkspaceAddColliderResult
AvoidanceWorkspaceAddColliderResult.
Definition: avoidanceworkspace.h:22
ColliderArray m_ignoredColliders
The array of discarded Colliders.
Definition: avoidanceworkspace.h:65