This commit is contained in:
Confideo-IOM
2026-09-08 20:31:57 +01:00
parent 1ad59aff2e
commit 4bbfd8b8e2
44 changed files with 1121 additions and 425 deletions
@@ -42,7 +42,24 @@ void HydraPlanetQuadActor::InitialiseQuad(float planet_diameter, float quad_dime
_CreateMesh();
}
glm::vec3 HydraPlanetQuadActor::_ProjectSphere(glm::dvec4 vert_in, glm::mat4 trans, glm::mat4 inv_trans, double diameter, glm::vec3 origin)
void HydraPlanetQuadActor::CheckResolution(glm::dvec3 player_position)
{
if(m_divided)
{
std::vector<HydraID> children = GetEngine()->ActorManager()->GetChildren(GetID());
for(HydraID child_id : children)
{
}
}
double distance_to_quad = glm::length(player_position - m_centre);
if(distance_to_quad < m_quad_dimension)
{
}
}
glm::vec3 HydraPlanetQuadActor::_ProjectSphere(glm::dvec4 vert_in, glm::dmat4 trans, glm::dmat4 inv_trans, double diameter, glm::vec3 origin)
{
glm::dvec4 vert = trans * vert_in;
vert = glm::normalize(vert);
@@ -60,11 +77,18 @@ glm::vec3 HydraPlanetQuadActor::_ProjectSphere(glm::dvec4 vert_in, glm::mat4 tra
vert = glm::normalize(vert) * ((m_planet_diameter / 2.0) + (noise * 500.0f));
vert = inv_trans * glm::dvec4(vert.x, vert.y, vert.z, 1.0);
return glm::vec3(vert);
}
glm::dvec3 HydraPlanetQuadActor::_ProjectCentre(glm::dvec4 vert_in, glm::dmat4 trans, double diameter, glm::vec3 origin)
{
glm::dvec4 vert = trans * vert_in;
vert = glm::normalize(vert);
vert = vert * (m_planet_diameter / 2.0);
return glm::dvec3(vert);
}
void HydraPlanetQuadActor::_CreatePosition()
{
HydraECS *ecs = GetEngine()->ECS();
@@ -121,10 +145,15 @@ void HydraPlanetQuadActor::_CreateMesh()
uint32_t index_idx = 0;
//glm::mat4 trans = GetEngine()->ActorManager()->GetActorPose(actor_id);
glm::mat4 trans_matrix = glm::translate(pos_comp.position);
glm::mat4 rot_matrix = glm::toMat4(glm::quat(pos_comp.orientation));
glm::mat4 trans = trans_matrix * rot_matrix;
glm::mat4 inv_trans = glm::inverse(trans);
glm::dmat4 trans_matrix = glm::translate(pos_comp.position);
glm::dmat4 rot_matrix = glm::toMat4(glm::quat(pos_comp.orientation));
glm::dmat4 trans = trans_matrix * rot_matrix;
glm::dmat4 inv_trans = glm::inverse(trans);
glm::dvec4 centre = glm::dvec4(max_x - min_x, max_y - min_y, max_z - min_z, 1.0);
m_centre = _ProjectCentre(centre, trans, m_planet_diameter, m_origin);
for (uint32_t y_count = 0; y_count < m_divisions - 1; y_count++)
{
for (uint32_t x_count = 0; x_count < m_divisions - 1; x_count++)
@@ -236,3 +265,4 @@ void HydraPlanetQuadActor::_CreateRenderableComponent()
ecs->AddComponent<HydraRenderableComponent>(GetID(), render_comp);
ecs->AddComponent<HydraShadowCasterComponent>(GetID(), shad_caster);
}