This commit is contained in:
Confideo-IOM
2026-09-07 16:25:43 +01:00
parent ad8695b7a4
commit 4f008cd809
63 changed files with 391 additions and 338 deletions
@@ -7,12 +7,15 @@
#include "../../ecs/components/HydraMeshComponent.h"
#include "../../ecs/components/HydraRenderableComponent.h"
#include "../../ecs/components/HydraMaterialComponent.h"
#include "../../ecs/components/HydraShadowCasterComponent.h"
#include "../../buffer/HydraMaterialBufferManager.h"
#include "../../buffer/HydraTextureBufferManager.h"
#include "../../buffer/HydraMaterialBuffer.h"
#include "../../mesh/HydraMeshManager.h"
#include "../../mesh/HydraMesh.h"
#include <FastNoiseLite.h>
void HydraPlanetQuadActor::InitialiseComponents()
{
// HydraECS* ecs = GetEngine()->ECS();
@@ -40,13 +43,23 @@ void HydraPlanetQuadActor::InitialiseQuad(float planet_diameter, float quad_dime
}
glm::vec3 HydraPlanetQuadActor::_ProjectSphere(glm::dvec4 vert_in, glm::mat4 trans, glm::mat4 inv_trans, double diameter, glm::vec3 origin)
{
{
glm::dvec4 vert = trans * vert_in;
vert = glm::normalize(vert);
vert.x *= (m_planet_diameter / 2.0);
vert.y *= (m_planet_diameter / 2.0);
vert.z *= (m_planet_diameter / 2.0);
vert = vert * (m_planet_diameter / 2.0);
FastNoiseLite fnl;
fnl.SetFrequency(0.1f);
fnl.SetNoiseType(FastNoiseLite::NoiseType::NoiseType_OpenSimplex2);
fnl.SetFractalType(FastNoiseLite::FractalType::FractalType_FBm);
fnl.SetSeed(341411);
float noise = fnl.GetNoise(vert.x, vert.y, vert.z);
vert = glm::normalize(vert) * ((m_planet_diameter / 2.0) + (noise * 1.0f));
vert = inv_trans * glm::dvec4(vert.x, vert.y, vert.z, 1.0);
return glm::vec3(vert);
}
@@ -63,6 +76,8 @@ void HydraPlanetQuadActor::_CreateMesh()
HydraMeshManager *mesh_manager = GetEngine()->MeshManager();
HydraID mesh_id = mesh_manager->CreateMesh();
HydraMesh *mesh = mesh_manager->GetMesh(mesh_id);
HydraMaterialComponent mat_comp = GetEngine()->ECS()->GetComponent<HydraMaterialComponent>(GetID());
HydraPositionComponent pos_comp = GetEngine()->ECS()->GetComponent<HydraPositionComponent>(GetID());
@@ -116,6 +131,8 @@ glm::mat4 inv_trans = glm::inverse(trans);
glm::dvec4 vert = glm::dvec4(x, y, min_z, 1.0);
glm::vec3 final_vert = _ProjectSphere(vert, trans, inv_trans, m_planet_diameter, m_origin);
mesh->vertexes[vert_idx] = {final_vert.x, final_vert.y, final_vert.z, u, v, actor_id, mat_comp.material_id, 0};
uint32_t ind0 = vert_idx;
@@ -210,7 +227,10 @@ void HydraPlanetQuadActor::_CreatePhysics()
void HydraPlanetQuadActor::_CreateRenderableComponent()
{
HydraRenderableComponent render_comp;
HydraShadowCasterComponent shad_caster;
HydraECS *ecs = GetEngine()->ECS();
render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR, true);
render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_SHADOW_CASTER, true);
ecs->AddComponent<HydraRenderableComponent>(GetID(), render_comp);
ecs->AddComponent<HydraShadowCasterComponent>(GetID(), shad_caster);
}