2018-04-15 15:49:03 +00:00
|
|
|
#include "planet/Planet.h"
|
|
|
|
#include "planet/PlanetFace.h"
|
|
|
|
|
2020-03-27 10:44:33 +00:00
|
|
|
Planet::Planet(glm::vec3 position, float radius, PlanetNoiseParams &noiseParams) :
|
2023-02-23 19:33:50 +00:00
|
|
|
m_position(position), m_radius(radius), m_noise(noiseParams.frequency, noiseParams.amplitude, noiseParams.lacunarity, noiseParams.persistence)
|
2018-04-15 15:49:03 +00:00
|
|
|
{
|
2023-02-23 19:33:50 +00:00
|
|
|
for (unsigned int a = 0; a <= 4; a++)
|
|
|
|
{
|
|
|
|
for (unsigned int b = 0; b <= 4; b++)
|
|
|
|
{
|
|
|
|
for (unsigned int c = 0; c <= 4; c++)
|
|
|
|
{
|
|
|
|
for (unsigned int d = 0; d <= 4; d++)
|
|
|
|
{
|
|
|
|
m_ibuffers[a][b][c][d] = new PlanetIndexBuffer(16, a, b, c, d);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-05 11:40:39 +00:00
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
{
|
|
|
|
m_faces[i] = new PlanetFace(this, i);
|
|
|
|
}
|
2022-02-25 16:39:45 +00:00
|
|
|
connectFaces();
|
2018-04-15 15:49:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Planet::~Planet()
|
|
|
|
{
|
2018-06-05 11:40:39 +00:00
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
{
|
|
|
|
delete m_faces[i];
|
|
|
|
}
|
2023-02-23 19:33:50 +00:00
|
|
|
|
|
|
|
for (unsigned int a = 0; a <= 4; a++)
|
|
|
|
{
|
|
|
|
for (unsigned int b = 0; b <= 4; b++)
|
|
|
|
{
|
|
|
|
for (unsigned int c = 0; c <= 4; c++)
|
|
|
|
{
|
|
|
|
for (unsigned int d = 0; d <= 4; d++)
|
|
|
|
{
|
|
|
|
delete m_ibuffers[a][b][c][d];
|
|
|
|
m_ibuffers[a][b][c][d] = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-06-05 11:40:39 +00:00
|
|
|
}
|
|
|
|
|
2018-06-06 18:11:17 +00:00
|
|
|
void Planet::draw(Camera* camera, Shader* shader)
|
2018-06-05 11:40:39 +00:00
|
|
|
{
|
2020-03-21 15:58:23 +00:00
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
{
|
|
|
|
m_faces[i]->draw(camera, shader);
|
|
|
|
}
|
2018-06-05 11:40:39 +00:00
|
|
|
}
|
2018-04-15 15:49:03 +00:00
|
|
|
|
2018-06-06 18:11:17 +00:00
|
|
|
void Planet::tick(Camera* camera, GLfloat dtime)
|
2018-06-05 11:40:39 +00:00
|
|
|
{
|
2022-09-28 19:20:47 +00:00
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
{
|
|
|
|
m_faces[i]->tick(camera, dtime);
|
|
|
|
}
|
2023-02-24 13:34:40 +00:00
|
|
|
// m_faces[FACE_TOP]->tick(camera, dtime);
|
2022-09-28 19:20:47 +00:00
|
|
|
// m_faces[FACE_BACK]->tick(camera, dtime);
|
2022-02-25 16:39:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Planet::connectFaces()
|
|
|
|
{
|
|
|
|
m_faces[FACE_FRONT]->connect(TOP, m_faces[FACE_TOP]);
|
|
|
|
m_faces[FACE_FRONT]->connect(LEFT, m_faces[FACE_LEFT]);
|
|
|
|
m_faces[FACE_FRONT]->connect(BOTTOM, m_faces[FACE_BOTTOM]);
|
|
|
|
m_faces[FACE_LEFT]->connect(TOP, m_faces[FACE_TOP]);
|
|
|
|
m_faces[FACE_LEFT]->connect(LEFT, m_faces[FACE_BACK]);
|
|
|
|
m_faces[FACE_LEFT]->connect(BOTTOM, m_faces[FACE_BOTTOM]);
|
|
|
|
m_faces[FACE_BACK]->connect(TOP, m_faces[FACE_TOP]);
|
|
|
|
m_faces[FACE_BACK]->connect(LEFT, m_faces[FACE_RIGHT]);
|
|
|
|
m_faces[FACE_BACK]->connect(BOTTOM, m_faces[FACE_BOTTOM]);
|
|
|
|
m_faces[FACE_RIGHT]->connect(TOP, m_faces[FACE_TOP]);
|
|
|
|
m_faces[FACE_RIGHT]->connect(LEFT, m_faces[FACE_FRONT]);
|
|
|
|
m_faces[FACE_RIGHT]->connect(BOTTOM, m_faces[FACE_BOTTOM]);
|
2018-04-15 15:49:03 +00:00
|
|
|
}
|
2020-03-26 17:42:05 +00:00
|
|
|
|
2023-02-24 13:34:40 +00:00
|
|
|
const glm::mat4 Planet::getTransformation()
|
2020-03-26 17:42:05 +00:00
|
|
|
{
|
|
|
|
glm::mat4 newMat = glm::mat4(1.0f);
|
|
|
|
newMat = glm::translate(newMat, m_position);
|
|
|
|
return newMat;
|
|
|
|
}
|
2023-02-23 19:33:50 +00:00
|
|
|
|
|
|
|
PlanetIndexBuffer* Planet::getIndexBuffer(const unsigned int detailTop, const unsigned int detailRight, const unsigned int detailBottom, const unsigned int detailLeft) {
|
|
|
|
return m_ibuffers[detailTop][detailRight][detailBottom][detailLeft];
|
|
|
|
}
|