gwnavruntime/visualdebug/messages/gamecamerablob.h Source File

gamecamerablob.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: MAMU - secondary contact: NOBODY
9 #ifndef Navigation_GameCameraBlob_H
10 #define Navigation_GameCameraBlob_H
11 
15 
16 namespace Kaim
17 {
18 
19 class GameCameraBlob
20 {
21  KY_ROOT_BLOB_CLASS(VisualDebugMessage, GameCameraBlob, 0)
22 
23 public:
24  GameCameraBlob() : m_fovInDegrees(45.0f) {}
25 
26  Vec3f m_eye; // camera position
27  Vec3f m_center; // camera look at position
28  Vec3f m_up; // camera up vector
29  KyFloat32 m_fovInDegrees; // viewport field of view angle in degree
30 };
31 
32 inline void SwapEndianness(Endianness::Target e, GameCameraBlob& self)
33 {
34  SwapEndianness(e, self.m_eye);
35  SwapEndianness(e, self.m_center);
36  SwapEndianness(e, self.m_up);
37  SwapEndianness(e, self.m_fovInDegrees);
38 }
39 
40 class GameCameraBlobBuilder : public BaseBlobBuilder< GameCameraBlob >
41 {
42  KY_CLASS_WITHOUT_COPY(GameCameraBlobBuilder)
43 
44 public:
45  GameCameraBlobBuilder(const Vec3f& eye, const Vec3f& center, const Vec3f& up, KyFloat32 fov)
46  : m_eye(eye)
47  , m_center(center)
48  , m_up(up)
49  , m_fovInDegrees(fov)
50  {}
51 
52 private:
53  virtual void DoBuild()
54  {
55  BLOB_SET(m_blob->m_eye, m_eye);
56  BLOB_SET(m_blob->m_center, m_center);
57  BLOB_SET(m_blob->m_up, m_up);
58  BLOB_SET(m_blob->m_fovInDegrees, m_fovInDegrees);
59  }
60 
61  Vec3f m_eye; // camera position
62  Vec3f m_center; // camera look at position
63  Vec3f m_up; // camera up vector
64  KyFloat32 m_fovInDegrees; // viewport field of view angle in degree
65 };
66 
67 class GameCameraAttitudeBlob
68 {
69  KY_ROOT_BLOB_CLASS(VisualDebugMessage, GameCameraAttitudeBlob, 0)
70 
71 public:
72  GameCameraAttitudeBlob() : m_fovInDegrees(45.0f) {}
73 
74  Vec3f m_pos; // camera position
75  Vec3f m_right; // camera right vector
76  Vec3f m_up; // camera up vector
77  Vec3f m_front; // camera front vector
78  KyFloat32 m_fovInDegrees; // viewport field of view angle in degree
79 };
80 
81 inline void SwapEndianness(Endianness::Target e, GameCameraAttitudeBlob& self)
82 {
83  SwapEndianness(e, self.m_pos);
84  SwapEndianness(e, self.m_right);
85  SwapEndianness(e, self.m_up);
86  SwapEndianness(e, self.m_front);
87  SwapEndianness(e, self.m_fovInDegrees);
88 }
89 
90 class GameCameraAttitudeBlobBuilder : public BaseBlobBuilder< GameCameraAttitudeBlob >
91 {
92  KY_CLASS_WITHOUT_COPY(GameCameraAttitudeBlobBuilder)
93 
94 public:
95  GameCameraAttitudeBlobBuilder(const Vec3f& pos, const Vec3f& right, const Vec3f& up, const Vec3f& front, KyFloat32 fov)
96  : m_pos(pos)
97  , m_right(right)
98  , m_up(up)
99  , m_front(front)
100  , m_fovInDegrees(fov)
101  {}
102 
103 private:
104  virtual void DoBuild()
105  {
106  BLOB_SET(m_blob->m_pos, m_pos);
107  BLOB_SET(m_blob->m_right, m_right);
108  BLOB_SET(m_blob->m_up, m_up);
109  BLOB_SET(m_blob->m_front, m_front);
110  BLOB_SET(m_blob->m_fovInDegrees, m_fovInDegrees);
111  }
112 
113  Vec3f m_pos; // camera position
114  Vec3f m_right; // camera right vector
115  Vec3f m_up; // camera up vector
116  Vec3f m_front; // camera front vector
117  KyFloat32 m_fovInDegrees; // viewport field of view angle in degree
118 };
119 
120 } // namespace Kaim
121 
122 #endif // Navigation_LogBlob_H
#define BLOB_SET(blob, value)
Use this macro only in implementations of BaseBlobBuilder::DoBuild().
Definition: baseblobbuilder.h:136
#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
GameCameraBlob * m_blob
The blob maintained by this builder. Only modify using the macros listed under DoBuild().
Definition: baseblobbuilder.h:117
Definition: gamekitcrowddispersion.h:20
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43