voxspatium/src/planet/Planet.cpp

63 lines
1.7 KiB
C++
Raw Normal View History

#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) :
m_position(position), m_radius(radius), m_noise(noiseParams.frequency, noiseParams.amplitude, noiseParams.lacunarity, noiseParams.persistence),
m_ibuffers(new PlanetIndexBuffer(15))
{
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();
}
Planet::~Planet()
{
2018-06-05 11:40:39 +00:00
for (int i = 0; i < 6; i++)
{
delete m_faces[i];
}
delete m_ibuffers;
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
{
for (int i = 0; i < 6; i++)
{
m_faces[i]->draw(camera, shader);
}
2018-06-05 11:40:39 +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-02-25 16:39:45 +00:00
// for (int i = 0; i < 6; i++)
// {
// m_faces[i]->tick(camera, dtime);
// }
m_faces[FACE_BACK]->tick(camera, dtime);
}
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]);
}
glm::mat4 Planet::getTransformation()
{
glm::mat4 newMat = glm::mat4(1.0f);
newMat = glm::translate(newMat, m_position);
return newMat;
}