gwnavruntime/visualdebug/messages/gamecamerablob.h Source File

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