gwnavgeneration/input/taggedtriangle3f.h Source File

taggedtriangle3f.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: LASI - secondary contact: GUAL
9 #ifndef GwNavGen_ClientInputTriangle_H
10 #define GwNavGen_ClientInputTriangle_H
11 
12 
15 
16 namespace Kaim
17 {
18 
19 class DynamicTaggedTriangle3f
20 {
21  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
22 public:
23  DynamicTaggedTriangle3f() {}
24  DynamicTaggedTriangle3f(const Triangle3f& triangle) : m_triangle3f(triangle) {}
25  DynamicTaggedTriangle3f(const Triangle3f& triangle, const DynamicNavTag& navTag) : m_triangle3f(triangle), m_navTag(navTag) {}
26 
27  Triangle3f m_triangle3f;
28  DynamicNavTag m_navTag;
29 };
30 
31 class TaggedTriangle3f
32 {
33  KY_CLASS_WITHOUT_COPY(TaggedTriangle3f)
34  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
35 public:
36  TaggedTriangle3f() : m_navTagIdx(KyUInt32MAXVAL) {}
37  Triangle3f m_triangle3f;
38  NavTag m_navTag;
39  mutable KyUInt32 m_navTagIdx;
40 };
41 inline void SwapEndianness(Endianness::Target e, TaggedTriangle3f& self)
42 {
43  SwapEndianness(e, self.m_triangle3f);
44  SwapEndianness(e, self.m_navTag);
45  SwapEndianness(e, self.m_navTagIdx);
46 }
47 
48 class TaggedTriangle3fBlobBuilder : public BaseBlobBuilder<TaggedTriangle3f>
49 {
50 public:
51  TaggedTriangle3fBlobBuilder(const DynamicTaggedTriangle3f& navTag) : m_dynamicInputTriangle(&navTag) {}
52 private:
53  void DoBuild()
54  {
55  BLOB_SET(m_blob->m_triangle3f, m_dynamicInputTriangle->m_triangle3f);
56 
57  NavTagBlobBuilder navTagBuilder(m_dynamicInputTriangle->m_navTag);
58  BLOB_BUILD(m_blob->m_navTag, navTagBuilder);
59  }
60 
61  const DynamicTaggedTriangle3f* m_dynamicInputTriangle;
62 };
63 
64 }
65 
66 
67 #endif
68 
#define BLOB_SET(blob, value)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:136
#define BLOB_BUILD(blob, builder)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:189
#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
TaggedTriangle3f * m_blob
The blob maintained by this builder. Only modify using the macros listed under DoBuild().
Definition: baseblobbuilder.h:117
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
#define KyUInt32MAXVAL
The maximum value that can be stored in the KyUInt32 variable type.
Definition: types.h:226