Refactoring camera

This commit is contained in:
Dynamitos
2025-04-11 23:13:19 +02:00
parent cc3f36d7fa
commit 9ac3755ad3
28 changed files with 53 additions and 124 deletions
-1
View File
@@ -2,7 +2,6 @@ target_sources(Engine
PRIVATE
BoxCollider.h
Camera.h
Camera.cpp
Collider.h
Collider.cpp
Component.h
-53
View File
@@ -1,53 +0,0 @@
#include "Camera.h"
#include "Actor/Actor.h"
#include <algorithm>
#include <iostream>
using namespace Seele;
using namespace Seele::Component;
using namespace Seele::Math;
Camera::Camera() : viewMatrix(Matrix4()), cameraPos(Vector()), bNeedsViewBuild(false) {
yaw = -3.1415f / 2;
pitch = 0;
Vector eyePos = Vector(0, 0, -5);
Vector lookAt = Vector(0, 0, 0);
viewMatrix = glm::lookAt(eyePos, lookAt, Vector(0, 1, 0));
cameraPos = eyePos;
cameraForward = Vector(0, 0, 1);
}
Camera::~Camera() {}
void Camera::mouseMove(float deltaYaw, float deltaPitch) {
yaw += deltaYaw / 500.f;
pitch += deltaPitch / 500.f;
Vector cameraDirection = glm::normalize(Vector(cos(yaw) * cos(pitch), sin(pitch), sin(yaw) * cos(pitch)));
Matrix4 viewMat = glm::lookAt(getTransform().getPosition(), getTransform().getPosition() + cameraDirection, Vector(0, 1, 0));
getTransform().setRotation(viewMat); // quaternion from matrix, janky but im bad at math
bNeedsViewBuild = true;
}
void Camera::mouseScroll(float x) {
getTransform().translate(getTransform().getForward() * x);
bNeedsViewBuild = true;
}
void Camera::moveX(float amount) {
getTransform().translate(getTransform().getForward() * amount);
bNeedsViewBuild = true;
}
void Camera::moveY(float amount) {
getTransform().translate(getTransform().getRight() * amount);
bNeedsViewBuild = true;
}
void Camera::buildViewMatrix() {
Vector eyePos = getTransform().getPosition();
Vector lookAt = eyePos + getTransform().getForward();
viewMatrix = glm::lookAt(eyePos, lookAt, Vector(0, 1, 0));
cameraPos = eyePos;
cameraForward = getTransform().getForward();
bNeedsViewBuild = false;
}
+1 -25
View File
@@ -6,32 +6,8 @@
namespace Seele {
namespace Component {
struct Camera {
REQUIRE_COMPONENT(Transform)
Camera();
~Camera();
Matrix4 getViewMatrix() const {
assert(!bNeedsViewBuild);
return viewMatrix;
}
Vector getCameraPosition() const { return cameraPos; }
Vector getCameraForward() const { return cameraForward; }
void mouseMove(float deltaX, float deltaY);
void mouseScroll(float x);
void moveX(float amount);
void moveY(float amount);
void buildViewMatrix();
bool mainCamera = false;
private:
float yaw;
float pitch;
Matrix4 viewMatrix;
Vector cameraPos;
Vector cameraForward;
bool bNeedsViewBuild;
bool mainCamera = false;
};
} // namespace Component
} // namespace Seele