feat(gameui): add CSimpleCamera class

This commit is contained in:
VDm 2025-06-23 00:20:16 +04:00
parent a99dc295c4
commit a30b405251
4 changed files with 132 additions and 2 deletions

View file

@ -0,0 +1,65 @@
#include "CSimpleCamera.hpp"
#include <tempest/rect/CRect.hpp>
CSimpleCamera::CSimpleCamera()
: m_position()
, m_facing()
, m_nearZ(0.11111111f)
, m_farZ(277.77777f)
, m_fov(1.5707964f)
, m_aspect(1.0f) {
this->SetFacing(0.0f, 0.0f, 0.0f);
}
CSimpleCamera::CSimpleCamera(float nearZ, float farZ, float fov)
: m_position()
, m_facing()
, m_nearZ(nearZ)
, m_farZ(farZ)
, m_fov(fov)
, m_aspect(1.0f) {
this->SetFacing(0.0f, 0.0f, 0.0f);
}
CSimpleCamera::~CSimpleCamera() {
}
C3Vector CSimpleCamera::Forward() {
return {
this->m_facing.a0,
this->m_facing.a1,
this->m_facing.a2
};
}
C3Vector CSimpleCamera::Right() {
return {
this->m_facing.b0,
this->m_facing.b1,
this->m_facing.b2
};
}
C3Vector CSimpleCamera::Up() {
return {
this->m_facing.c0,
this->m_facing.c1,
this->m_facing.c2
};
}
void CSimpleCamera::SetFacing(float yaw, float pitch, float roll) {
// TODO
}
void CSimpleCamera::SetFacing(const C3Vector& forward, const C3Vector& up) {
// TODO
}
void CSimpleCamera::SetFacing(const C3Vector& forward) {
// TODO
}
void CSimpleCamera::SetGxProjectionAndView(const CRect& projectionRect) {
// TODO
}

View file

@ -0,0 +1,48 @@
#ifndef GAME_UI_CAMERA_CSIMPLECAMERA_HPP
#define GAME_UI_CAMERA_CSIMPLECAMERA_HPP
#include <tempest/vector/C3Vector.hpp>
#include <tempest/matrix/C33Matrix.hpp>
class CRect;
class CSimpleCamera {
public:
CSimpleCamera();
CSimpleCamera(float nearZ, float farZ, float fov);
virtual ~CSimpleCamera();
C3Vector& Position() { this->m_position; };
C33Matrix& Facing() { this->m_facing; };
float NearZ() { this->m_nearZ; };
float FarZ() { this->m_farZ; };
float FOV() { this->m_fov; };
float Aspect() { this->m_aspect; };
C3Vector Forward();
C3Vector Right();
C3Vector Up();
void SetPosition(const C3Vector& position) { this->m_position = position; };
void SetPosition(float x, float y, float z) { this->m_position = C3Vector(x, y, z); };
void SetFacing(float yaw, float pitch, float roll);
void SetFacing(const C3Vector& forward, const C3Vector& up);
void SetFacing(const C3Vector& forward);
void SetFieldOfView(float value) { this->m_fov = value; };
void SetNearZ(float value) { this->m_nearZ = value; };
void SetFarZ(float value) { this->m_farZ = value; };
void SetGxProjectionAndView(const CRect& projectionRect);
// Member variables
C3Vector m_position;
C33Matrix m_facing;
float m_nearZ;
float m_farZ;
float m_fov;
float m_aspect;
};
#endif // GAME_UI_CAMERA_CSIMPLECAMERA_HPP