gwnavgeneration/input/taggedtriangle3f.h Source File

taggedtriangle3f.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 
10 
13 
14 namespace Kaim
15 {
16 
17 class DynamicTaggedTriangle3f
18 {
19  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
20 public:
21  DynamicTaggedTriangle3f() {}
22  DynamicTaggedTriangle3f(const Triangle3f& triangle) : m_triangle3f(triangle) {}
23  DynamicTaggedTriangle3f(const Triangle3f& triangle, const DynamicNavTag& navTag) : m_triangle3f(triangle), m_navTag(navTag) {}
24 
25  Triangle3f m_triangle3f;
26  DynamicNavTag m_navTag;
27 };
28 
29 class TaggedTriangle3f
30 {
31  KY_CLASS_WITHOUT_COPY(TaggedTriangle3f)
32  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
33 public:
34  TaggedTriangle3f() : m_navTagIdx(KyUInt32MAXVAL) {}
35  Triangle3f m_triangle3f;
36  NavTag m_navTag;
37  mutable KyUInt32 m_navTagIdx;
38 };
39 inline void SwapEndianness(Endianness::Target e, TaggedTriangle3f& self)
40 {
41  SwapEndianness(e, self.m_triangle3f);
42  SwapEndianness(e, self.m_navTag);
43  SwapEndianness(e, self.m_navTagIdx);
44 }
45 
46 class TaggedTriangle3fBlobBuilder : public BaseBlobBuilder<TaggedTriangle3f>
47 {
48 public:
49  TaggedTriangle3fBlobBuilder(const DynamicTaggedTriangle3f& navTag) : m_dynamicInputTriangle(&navTag) {}
50 
51 private:
52  void DoBuild()
53  {
54  BLOB_SET(m_blob->m_triangle3f, m_dynamicInputTriangle->m_triangle3f);
55 
56  NavTagBlobBuilder navTagBuilder(m_dynamicInputTriangle->m_navTag);
57  BLOB_BUILD(m_blob->m_navTag, navTagBuilder);
58  }
59 
60  const DynamicTaggedTriangle3f* m_dynamicInputTriangle;
61 };
62 
63 }
64 
65 
66 
#define BLOB_SET(blob, value)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:130
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define BLOB_BUILD(blob, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:175
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:27
TaggedTriangle3f * m_blob
The blob maintained by this builder. Only modify using the macros listed under DoBuild().
Definition: baseblobbuilder.h:113
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68