gwnavruntime/pathfollower/shortcuttrajectoryconfig.h Source File

shortcuttrajectoryconfig.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: LAPA - secondary contact: NOBODY
8 #ifndef Navigation_ShortcutTrajectoryConfig_H
9 #define Navigation_ShortcutTrajectoryConfig_H
10 
13 
14 namespace Kaim
15 {
16 
17 class ShortcutTrajectoryConfigBlob;
18 
19 class AdvancedShortcutTrajectoryConfig
20 {
22 
23 public:
24  AdvancedShortcutTrajectoryConfig() { SetDefaults(); }
25  void SetDefaults();
26 
27  bool operator==(const AdvancedShortcutTrajectoryConfig& other) const;
28  bool operator!=(const AdvancedShortcutTrajectoryConfig& other) const { return !operator==(other); }
29 
30 public:
31 
32  // ---------------------------------- General Shortcut Control Parameters ----------------------------------
37 
40  KyFloat32 m_shortcutAttemptDistanceRatio;
41 
44  KyFloat32 m_shortcutForceAttemptDistance;
45 
51  KyFloat32 m_snapOnPathDistance;
52 
53  // ---------------------------------- Forward Shortcut Control Parameters ----------------------------------
55 
58  KyFloat32 m_forwardSamplingDistance;
59 
63  KyFloat32 m_forwardMaxDistance;
64 
65  // ---------------------------------- Backward Sampling Parameters ----------------------------------
69 
72  KyFloat32 m_backwardSamplingDistance;
73 
76  KyFloat32 m_backwardMaxDistance;
77 };
78 inline void SwapEndianness(Endianness::Target e, AdvancedShortcutTrajectoryConfig& self)
79 {
80  SwapEndianness(e, self.m_snapOnPathDistance);
81  SwapEndianness(e, self.m_shortcutAttemptDistanceRatio);
82  SwapEndianness(e, self.m_shortcutForceAttemptDistance);
83  SwapEndianness(e, self.m_forwardSamplingDistance);
84  SwapEndianness(e, self.m_forwardMaxDistance);
85  SwapEndianness(e, self.m_backwardSamplingDistance);
86  SwapEndianness(e, self.m_backwardMaxDistance);
87 }
88 
89 
91 class ShortcutTrajectoryConfig
92 {
94 
95 public:
96  ShortcutTrajectoryConfig() { SetDefaults(); }
97  void SetDefaults();
98  void InitFromBlob(const ShortcutTrajectoryConfigBlob& blob);
99 
100  bool operator==(const ShortcutTrajectoryConfig& other) const;
101  bool operator!=(const ShortcutTrajectoryConfig& other) const { return !operator==(other); }
102 
103 public:
110 
111  AdvancedShortcutTrajectoryConfig m_advancedConfig;
112 };
113 
114 
115 
116 KY_INLINE void AdvancedShortcutTrajectoryConfig::SetDefaults()
117 {
118  m_snapOnPathDistance = 0.05f;
119  m_shortcutAttemptDistanceRatio = 0.7f;
120  m_shortcutForceAttemptDistance = 0.5f;
121  m_forwardSamplingDistance = 1.f;
122  m_forwardMaxDistance = 10.f;
123  m_backwardSamplingDistance = 1.f;
124  m_backwardMaxDistance = 10.f;
125 }
126 KY_INLINE bool AdvancedShortcutTrajectoryConfig::operator==(const AdvancedShortcutTrajectoryConfig& other) const
127 {
128  return m_snapOnPathDistance == other.m_snapOnPathDistance
129  && m_shortcutAttemptDistanceRatio == other.m_shortcutAttemptDistanceRatio
130  && m_shortcutForceAttemptDistance == other.m_shortcutForceAttemptDistance
131  && m_forwardSamplingDistance == other.m_forwardSamplingDistance
132  && m_forwardMaxDistance == other.m_forwardMaxDistance
133  && m_backwardSamplingDistance == other.m_backwardSamplingDistance
134  && m_backwardMaxDistance == other.m_backwardMaxDistance;
135 }
136 
137 
138 KY_INLINE void ShortcutTrajectoryConfig::SetDefaults()
139 {
140  m_snapOnPath = false;
141  m_advancedConfig.SetDefaults();
142 }
143 
144 KY_INLINE bool ShortcutTrajectoryConfig::operator==(const ShortcutTrajectoryConfig& other) const
145 {
146  return m_snapOnPath == other.m_snapOnPath
147  && m_advancedConfig == m_advancedConfig;
148 }
149 
150 } // namespace Kaim
151 
152 #endif
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
bool m_snapOnPath
Setting true forces the trajectory not to shortcut when the bot is at a distance from the path which ...
Definition: shortcuttrajectoryconfig.h:131
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