Files
HydraV3/HydraEngine/source/actor/PlanetActor/HydraPlanetQuadActor.h
T

53 lines
1.7 KiB
C++
Raw Normal View History

2026-08-17 21:44:00 +01:00
#ifndef HYDRAPLANETQUADACTOR
#define HYDRAPLANETQUADACTOR
#include "../HydraActor.h"
2026-09-04 15:26:37 +01:00
#include <GLMIncludes.h>
2026-08-17 21:44:00 +01:00
class CLASS_DEFINE HydraPlanetQuadActor : public HydraActor
{
2026-09-04 15:26:37 +01:00
public:
virtual void InitialiseComponents();
virtual void DeferredInitialiseComponents();
2026-09-23 22:29:31 +01:00
virtual void Destroy();
void InitialiseQuad(HydraID parent_id, float planet_diameter, float quad_dimension, uint32_t divisions, glm::dvec3 origin, glm::vec3 orientation);
2026-09-08 20:31:57 +01:00
void CheckResolution(glm::dvec3 player_position);
2026-09-23 22:29:31 +01:00
virtual ~HydraPlanetQuadActor();
2026-08-17 21:44:00 +01:00
private:
2026-09-08 20:31:57 +01:00
glm::vec3 _ProjectSphere(glm::dvec4 vert_in, glm::dmat4 trans, glm::dmat4 inv_trans, double diameter, glm::vec3 origin);
glm::dvec3 _ProjectCentre(glm::dvec4 vert_in, glm::dmat4 trans, double diameter, glm::vec3 origin);
2026-09-22 15:22:41 +01:00
void _Split();
2026-09-23 22:29:31 +01:00
HydraID m_parent_id = INVALID_HYDRA_ID;
2026-08-17 21:44:00 +01:00
double m_scale = 1.0;
double m_widthscale = 1000.0f;
2026-09-23 22:29:31 +01:00
HydraID m_center_actor = INVALID_HYDRA_ID;
2026-08-17 21:44:00 +01:00
HydraID m_material_component = INVALID_HYDRA_ID;
HydraID m_position_component = INVALID_HYDRA_ID;
HydraID m_mesh_component = INVALID_HYDRA_ID;
2026-09-04 15:26:37 +01:00
uint32_t m_divisions = 100;
float m_quad_dimension = 0;
float m_planet_diameter = 0;
2026-09-08 20:31:57 +01:00
glm::dvec3 m_centre {};
glm::vec3 m_origin {};
2026-09-22 15:22:41 +01:00
glm::vec3 m_orientation {};
2026-09-08 20:31:57 +01:00
bool m_divided = false;
2026-09-05 21:56:45 +01:00
2026-09-22 15:22:41 +01:00
std::vector<HydraID> m_child_quads;
2026-08-17 21:44:00 +01:00
protected:
void _CreatePosition();
void _CreateMesh();
void _CreateMaterial();
void _CreatePhysics();
void _CreateRenderableComponent();
2026-09-23 22:29:31 +01:00
void _MergeQuads();
2026-09-04 15:26:37 +01:00
2026-08-17 21:44:00 +01:00
};
#endif /* HYDRAPLANETQUADACTOR */