gwnavruntime/pathfollower/splinetrajectoryblob.h Source File

splinetrajectoryblob.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 
8 #pragma once
9 
16 
17 namespace Kaim
18 {
19 
20 class SplineTrajectory;
21 class Bot;
22 
23 
24 class SplineTrajectoryBlob
25 {
26  KY_ROOT_BLOB_CLASS(Runtime, SplineTrajectoryBlob, 1)
27 
28 public:
29  SplineTrajectoryBlob() {}
30 
31 public:
32  KyUInt32 m_visualDebugId;
33  CircleArcSplineBlob m_spline;
34 
35  PositionOnCircleArcSplineBlob m_positionOnSpline;
36  PositionOnCircleArcSplineBlob m_targetOnSpline;
37 
38  PositionOnCircleArcSplineBlob m_splineCutPosition_ThisFrame;
39  PositionOnCircleArcSplineBlob m_splineCutPosition_WhenSplineRequested;
40 
41  KyUInt32 m_currentChannelIdx;
42  KyUInt32 m_currentSectionIdx;
43 
44  KyUInt8 m_currentBotPosInChannelIsValid; // true if has a current channelIndex (m_currentChannelIdx, m_currentSectionIdx are valid)
45  KyUInt8 m_computationMode; // cf enum SplineComputationMode
46 
47  BlobArray<char> m_currentSplineRadiusProfileName;
48 };
49 
50 inline void SwapEndianness(Endianness::Target e, SplineTrajectoryBlob& self)
51 {
52  SwapEndianness(e, self.m_visualDebugId);
53  SwapEndianness(e, self.m_spline);
54  SwapEndianness(e, self.m_positionOnSpline);
55  SwapEndianness(e, self.m_targetOnSpline);
56  SwapEndianness(e, self.m_splineCutPosition_ThisFrame);
57  SwapEndianness(e, self.m_splineCutPosition_WhenSplineRequested);
58  SwapEndianness(e, self.m_currentChannelIdx);
59  SwapEndianness(e, self.m_currentSectionIdx);
60  SwapEndianness(e, self.m_currentBotPosInChannelIsValid);
61  SwapEndianness(e, self.m_computationMode);
62  SwapEndianness(e, self.m_currentSplineRadiusProfileName);
63 }
64 
65 class SplineTrajectoryBlobBuilder : public BaseBlobBuilder<SplineTrajectoryBlob>
66 {
67  KY_CLASS_WITHOUT_COPY(SplineTrajectoryBlobBuilder)
68 
69 public:
70  SplineTrajectoryBlobBuilder(const SplineTrajectory* splineTrajectory)
71  : m_splineTrajectory(splineTrajectory)
72  {}
73 
74  virtual void DoBuild();
75 
76 private:
77  const SplineTrajectory* m_splineTrajectory;
78 };
79 
80 } // namespace Kaim
81 
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:27
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
std::uint8_t KyUInt8
uint8_t
Definition: types.h:27