gwnavruntime/pathfollower/avoidancecollider.h Source File

avoidancecollider.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 
8 // primary contact: MUBI - secondary contact: LAPA
9 
10 #ifndef Navigation_AvoidanceCollider_H
11 #define Navigation_AvoidanceCollider_H
12 
14 
15 namespace Kaim
16 {
17 
20 {
21  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_PathFollowing)
22 
23 public:
24  // ---------------------------------- Public Member Functions ----------------------------------
25 
27  : m_position (Vec2f(0.0f, 0.0f))
28  , m_velocity (Vec2f(0.0f, 0.0f))
29  , m_radius (0.5f)
30  , m_ignored (false)
31  , m_pushOnContact(false)
32  , m_isBot (false)
33  {}
34 
35  KyFloat32 ComputeSquaredMinimumTimeToCollision(const AvoidanceCollider& collider) const;
36  KyFloat32 ComputeAvoidanceScoreForDirection (const Kaim::AvoidanceCollider& obstacleCollider, const Kaim::Vec2f candidateVelocity, const KyFloat32 timeHorizonInSeconds, const KyFloat32 safetyDistance, KyFloat32& collisionTime) const;
37 
38  // ---------------------------------- Public Data Members ----------------------------------
39 
40  Vec2f m_position;
41  Vec2f m_velocity;
42  KyFloat32 m_radius;
43  bool m_ignored;
44  bool m_pushOnContact;
45  bool m_isBot;
46 };
47 
48 inline void SwapEndianness(Endianness::Target e, AvoidanceCollider& self)
49 {
50  SwapEndianness(e, self.m_position);
51  SwapEndianness(e, self.m_velocity);
52  SwapEndianness(e, self.m_radius);
53 }
54 
55 
56 class AvoidanceScoreForDirectionComputer
57 {
58 public:
59  void Compute(const Kaim::AvoidanceCollider& rootCollider, const Kaim::AvoidanceCollider& obstacleCollider, const Kaim::Vec2f candidateVelocity, const KyFloat32 timeHorizonInSeconds, const KyFloat32 safetyDistance);
60 
61 public:
62 
63  // --- result ----
64 
65  KyFloat32 m_avoidanceScore;
66  KyFloat32 m_collisionTime;
67 
68  // --- intermediate computation ---
69 
70  KyFloat32 m_BHxV;
71  KyFloat32 m_AHxV;
72  Kaim::Vec2f m_Vr;
73 
74  KyFloat32 m_toiScore;
75  KyFloat32 m_crossingScore;
76 };
77 
78 
79 } // namespace Kaim
80 
81 #endif // Navigation_AvoidanceCollider_H
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
This class defines a two-dimensional vector whose coordinates are stored using floating-point numbers...
Definition: vec2f.h:24
A Collider is a 2D circular particle with a linear velocity.
Definition: avoidancecollider.h:19
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