9 #ifndef Navigation_SpatializedPointBlob_H
10 #define Navigation_SpatializedPointBlob_H
22 class SpatializedPoint;
23 class PointDbSpatialization;
28 enum PointDbSpatializationFlag
30 PointDbSpatializationFlag_InNavMesh = 1 << 0
33 class PointDbSpatializationBlob
38 Vec3f m_triangleCenter;
39 Vec3f m_triangleNormal;
40 PositionSpatializationRange m_positionSpatializationRange;
45 SwapEndianness(e,
self.m_flags);
46 SwapEndianness(e,
self.m_databaseIndex);
47 SwapEndianness(e,
self.m_triangleCenter);
48 SwapEndianness(e,
self.m_triangleNormal);
49 SwapEndianness(e,
self.m_positionSpatializationRange);
52 class PointDbSpatializationBlobBuilder :
public BaseBlobBuilder<PointDbSpatializationBlob>
57 PointDbSpatializationBlobBuilder(const PointDbSpatialization* dbProjection, const SpatializedPoint* spatializedPoint,
KyUInt32 databaseIndex)
58 : m_dbProjection(dbProjection), m_spatializedPoint(spatializedPoint), m_databaseIndex(databaseIndex)
61 virtual void DoBuild();
64 const PointDbSpatialization* m_dbProjection;
65 const SpatializedPoint* m_spatializedPoint;
71 class SpatializationResultBlob
74 KY_ROOT_BLOB_CLASS(Runtime, SpatializationResultBlob, 0)
77 KyUInt32 GetOutsideNavmeshCount() const;
78 bool IsOutsideNavMesh(
KyUInt32 databaseIndex) const;
82 BlobArray<PointDbSpatializationBlob> m_pointDbSpatializations;
85 inline
void SwapEndianness(Endianness::Target e, SpatializationResultBlob& self)
87 SwapEndianness(e,
self.m_visualDebugId);
88 SwapEndianness(e,
self.m_pointDbSpatializations);
91 class SpatializationResultBlobBuilder :
public BaseBlobBuilder<SpatializationResultBlob>
96 SpatializationResultBlobBuilder(
KyUInt32 visualDebugId, const SpatializedPoint* spatializedPoint)
97 : m_visualDebugId(visualDebugId), m_spatializedPoint(spatializedPoint)
100 virtual void DoBuild();
104 const SpatializedPoint* m_spatializedPoint;
110 class SpatializedPointBlob
113 KY_ROOT_BLOB_CLASS(Runtime, SpatializedPointBlob, 0)
117 KyUInt32 GetOutsideNavmeshCount() const;
120 BlobArray<PointDbSpatializationBlob> m_pointDbSpatializations;
126 inline
void SwapEndianness(Endianness::Target e, SpatializedPointBlob& self)
128 SwapEndianness(e,
self.m_pointDbSpatializations);
129 SwapEndianness(e,
self.m_position);
130 SwapEndianness(e,
self.m_height);
131 SwapEndianness(e,
self.m_type);
137 class SpatializedPointBlobBuilder :
public BaseBlobBuilder<SpatializedPointBlob>
142 SpatializedPointBlobBuilder(const SpatializedPoint* spatializedPoint,
VisualDebugLOD visualDebugLOD)
143 : m_spatializedPoint(spatializedPoint)
144 , m_visualDebugLOD(visualDebugLOD)
147 virtual void DoBuild();
150 void FillPointDbSpatializationBlob(
const PointDbSpatialization& dbProjection,
151 PointDbSpatializationBlob& pointDbSpatialization,
KyUInt32 i);
153 const SpatializedPoint* m_spatializedPoint;
161 #endif // Navigation_SpatializedPointBlob_H
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:387
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
VisualDebugLOD
Enumerates the visual debug levels of details.
Definition: worldelement.h:26
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43