initial commit

This commit is contained in:
Confideo-IOM
2026-07-17 15:30:29 +01:00
commit 7e8ec5a825
416 changed files with 40308 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
#include "HydraCamera.h"
#include "../engine/HydraEngine.h"
#include "../windowmanager/HydraRenderSettings.h"
#include "../actor/HydraActor.h"
#include "../actor/HydraActorManager.h"
glm::mat4x4 HydraCamera::GetView()
{
glm::dvec3 actor_pos = glm::dvec3(0,0,0);
glm::mat4 actor_rot = glm::mat4(1);
glm::vec3 actor_euler = glm::vec3(0);
if(m_attached_actor != INVALID_HYDRA_ID)
{
HydraActor* actor = GetEngine()->ActorManager()->GetActor(m_attached_actor);
if(actor != nullptr)
{
actor_pos = (GetEngine()->ActorManager()->GetActorPosition(m_attached_actor)) * glm::dvec3(-1, -1, -1);
actor_euler = GetEngine()->ActorManager()->GetActorOrientation(m_attached_actor);
actor_rot = glm::eulerAngleXYZ(actor_euler.x, actor_euler.y, actor_euler.z);
}
}
glm::mat4 trans = glm::translate(actor_pos);
glm::mat4 rot = actor_rot;// * glm::eulerAngleXYZ(EulerAngle.x, EulerAngle.y, EulerAngle.z);
glm::mat4 camera_transform = rot * trans;
return camera_transform;
}
glm::mat4x4 HydraCamera::GetProjection()
{
HydraRenderSettings render_settings = GetEngine()->RenderSettings();
float fovRad = glm::radians(render_settings.FOV);
//glm::mat4 projection = glm::perspectiveLH<float>(fovRad, (float)render_settings->ViewportWidth / (float)render_settings->ViewportHeight, render_settings->Near, render_settings->Far);
glm::mat4 projection = glm::perspectiveRH<float>(fovRad, (float)render_settings.ViewportWidth / (float)render_settings.ViewportHeight, render_settings.Near, render_settings.Far);
// glm::mat4 correction = {1, 0, 0, 0,
// 0,-1, 0, 0,
// 0, 0, 0.5f,0.5f,
// 0,0, 0, 1};
// projection = correction * projection;
return projection;
}
glm::mat4x4 HydraCamera::GetOrthoProjection()
{
HydraRenderSettings render_settings = GetEngine()->RenderSettings();
float fovRad = glm::radians(render_settings.FOV);
glm::mat4 projection = glm::ortho<float>(0.0f, render_settings.DisplayWidth, 0, render_settings.DisplayHeight, 0.0f, 1000.0f);
return projection;
}
glm::vec3 HydraCamera::GetPosition()
{
glm::dvec3 actor_pos = glm::dvec3(0,0,0);
if(m_attached_actor != INVALID_HYDRA_ID)
{
HydraActor* actor = GetEngine()->ActorManager()->GetActor(m_attached_actor);
if(actor != nullptr)
{
actor_pos = (GetEngine()->ActorManager()->GetActorPosition(m_attached_actor)) * glm::dvec3(1, 1, 1);
}
}
return actor_pos;
}
void HydraCamera::AttachToActor(HydraID actorID)
{
m_attached_actor = actorID;
}
+23
View File
@@ -0,0 +1,23 @@
#ifndef HYDRACAMERA
#define HYDRACAMERA
#include "../engine/HydraObject.h"
#include <GLMIncludes.h>
class CLASS_DEFINE HydraCamera : public HydraObject
{
private:
glm::vec4 m_right = glm::vec4(1, 0, 0, 1);
glm::vec4 m_up = glm::vec4(0, 1, 0, 1);
glm::vec4 m_forward = glm::vec4(0, 0, -1, 1);
HydraID m_attached_actor = INVALID_HYDRA_ID;
public:
glm::mat4x4 GetView();
glm::mat4x4 GetProjection();
glm::mat4x4 GetOrthoProjection();
HydraID GetAttachedActor() {return m_attached_actor;}
glm::vec3 GetPosition();
void AttachToActor(HydraID actorID);
};
#endif /* HYDRACAMERA */