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();
|
|
|
|
|
virtual void Destroy(){}
|
2026-09-05 21:56:45 +01:00
|
|
|
void InitialiseQuad(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-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-08-17 21:44:00 +01:00
|
|
|
double m_scale = 1.0;
|
|
|
|
|
double m_widthscale = 1000.0f;
|
2026-09-22 15:22:41 +01:00
|
|
|
|
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-04 15:26:37 +01:00
|
|
|
|
2026-08-17 21:44:00 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* HYDRAPLANETQUADACTOR */
|