Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
Cargando...
Buscando...
Nada coincide
Camera.h
Ir a la documentación de este archivo.
1
6#pragma once
7#include "Prerequisites.h"
9
10class
11Camera {
12public:
13 Camera();
14 ~Camera() = default;
15
26 void
27 setLens(float fovYRadians, float aspectRatio, float nearPlane, float farPlane);
28
32 void
33 setPosition(float x, float y, float z);
34
38 void
39 setPosition(const EU::Vector3& pos);
40
45 getPosition() const { return m_position; }
46
48 getPosition() { return m_position; }
49
61 void
62 lookAt(const EU::Vector3& pos,
63 const EU::Vector3& target,
64 const EU::Vector3& up = EU::Vector3(0, 1, 0));
65
69 void
70 walk(float d);
71
75 void
76 strafe(float d);
77
84 void
85 yaw(float radians);
86
93 void
94 pitch(float radians);
95
106 void
108
112 XMMATRIX
113 getView() const { return XMLoadFloat4x4(&m_view); }
114
118 XMMATRIX
119 getProj() const { return XMLoadFloat4x4(&m_proj); }
120
127 XMMATRIX
129 XMMATRIX v = getView();
130 // Quitar traslación (fila 4)
131 v.r[3] = XMVectorSet(0, 0, 0, 1);
132 return v;
133 }
134
138 float getFovY() const { return m_fovY; }
139 float getAspect() const { return m_aspectRatio; }
140 float getNearZ() const { return m_nearPlane; }
141 float getFarZ() const { return m_farPlane; }
142
146 EU::Vector3 GetRight() const { return m_right; }
147 EU::Vector3 GetUp() const { return m_up; }
148 EU::Vector3 GetForward() const { return m_forward; }
149
150 inline EU::Vector3
151 FromXM(FXMVECTOR v) {
152 XMFLOAT3 t;
153 XMStoreFloat3(&t, v);
154 return EU::Vector3(t.x, t.y, t.z);
155 }
156
157
158private:
159 // Estado espacial
162 // Basis Ortonormal (en mundo)
163 EU::Vector3 m_right { 1.0f, 0.0f, 0.0f };
164 EU::Vector3 m_up { 0.0f, 1.0f, 0.0f };
165 EU::Vector3 m_forward { 0.0f, 0.0f, 1.0f };
167 // Matrices almacenadas
168 XMFLOAT4X4 m_view {};
169 XMFLOAT4X4 m_proj {};
170
171 // Parametros de la proyeccion
172 float m_fovY { XM_PIDIV4 };
173 float m_aspectRatio = 1.0f;
174 float m_nearPlane = 0.01f;
175 float m_farPlane = 1000.0f;
177 bool m_viewDirty = true;
178};
179
180
Declara la API de Prerequisites dentro del subsistema Core.
Declara la API de Vector3 dentro del subsistema Math.
Camera()
Definition Camera.cpp:8
float getFarZ() const
Definition Camera.h:141
XMMATRIX getView() const
Matriz View (mundo->vista).
Definition Camera.h:113
bool m_viewDirty
Flag indicating whether the view matrix needs to be recalculated.
Definition Camera.h:177
void pitch(float radians)
Rotación sobre el eje Right local (pitch).
Definition Camera.cpp:96
float m_fovY
The field of view (FOV) angle in radians.
Definition Camera.h:172
float m_farPlane
The distance to the far clipping plane.
Definition Camera.h:175
EU::Vector3 m_forward
The forward vector of the camera's orthonormal basis.
Definition Camera.h:165
EU::Vector3 getPosition() const
Obtiene la posición en mundo.
Definition Camera.h:45
XMFLOAT4X4 m_view
Definition Camera.h:168
XMFLOAT4X4 m_proj
Definition Camera.h:169
XMMATRIX getProj() const
Matriz Projection (vista->clip).
Definition Camera.h:119
EU::Vector3 FromXM(FXMVECTOR v)
Definition Camera.h:151
float getNearZ() const
Definition Camera.h:140
void setPosition(float x, float y, float z)
Define posición en mundo.
Definition Camera.cpp:28
EU::Vector3 m_up
The up vector of the camera's orthonormal basis.
Definition Camera.h:164
void strafe(float d)
Movimiento relativo a la cámara (izquierda/derecha).
Definition Camera.cpp:66
float getFovY() const
Devuelve parámetros de proyección (útil para UI/debug).
Definition Camera.h:138
float m_nearPlane
The distance to the near clipping plane.
Definition Camera.h:174
void lookAt(const EU::Vector3 &pos, const EU::Vector3 &target, const EU::Vector3 &up=EU::Vector3(0, 1, 0))
Fuerza la cámara a mirar a un objetivo (LH).
Definition Camera.cpp:40
EU::Vector3 GetForward() const
Definition Camera.h:148
void updateViewMatrix()
Recalcula la matriz View si es necesario.
Definition Camera.cpp:114
float m_aspectRatio
The aspect ratio of the camera's view (width divided by height).
Definition Camera.h:173
EU::Vector3 m_position
The position of the camera in world space.
Definition Camera.h:160
EU::Vector3 GetUp() const
Definition Camera.h:147
void yaw(float radians)
Rotación sobre el eje Y global (yaw).
Definition Camera.cpp:76
void walk(float d)
Movimiento relativo a la cámara (adelante/atrás).
Definition Camera.cpp:56
XMMATRIX GetViewNoTranslation() const
View sin traslación (solo rotación).
Definition Camera.h:128
EU::Vector3 & getPosition()
Definition Camera.h:48
~Camera()=default
EU::Vector3 GetRight() const
Vectores base (mundo) de la cámara.
Definition Camera.h:146
void setLens(float fovYRadians, float aspectRatio, float nearPlane, float farPlane)
Configura la proyección en perspectiva (LH).
Definition Camera.cpp:14
EU::Vector3 m_right
The right vector of the camera's orthonormal basis.
Definition Camera.h:163
float getAspect() const
Definition Camera.h:139
A 3D vector class.
Definition Vector3.h:45