one planet is always the sun and rendering the sun dynamically now.

This commit is contained in:
Andreas Ortmann 2016-09-30 22:47:28 +02:00
parent e1102e3231
commit f2bdadd49f
6 changed files with 75 additions and 42 deletions

View file

@ -0,0 +1,18 @@
#include "planet.hpp"
namespace game {
glm::vec3 Planet::getColor() const
{
switch (material) {
case Material::Rock: return glm::vec3(0.4, 0.2, 0.1);
case Material::Metal: return glm::vec3(0.1, 0.1, 0.1);
case Material::Sand: return glm::vec3(0.6, 0.6, 0.3);
case Material::Gas: return glm::vec3(0.8, 0.5, 0.2);
case Material::Ice: return glm::vec3(0.7, 0.8, 1.0);
case Material::Water: return glm::vec3(0.2, 0.7, 1.0);
case Material::Sun: return glm::vec3(1.0, 1.0, 0.8);
default: return glm::vec3(1.0, 0.0, 1.0); // diagnostic color
}
}
}

View file

@ -11,37 +11,26 @@ class Planet : public Object {
* Planets are build out of one material.
* TODO: support mixture or multiple material per planet.
*/
enum class Material { Rock, Metal, Sand, Gas, Ice, Water, Sun };
enum class Material { Rock=0, Metal=1, Sand=2, Gas=3, Ice=4, Water=5, Sun=6 };
Planet(const glm::vec2 &pos, int id, float r)
: Planet(pos, id, r, Material::Rock) {}
Planet(const glm::vec2 &pos, int id, float r, Material mat)
: Object(pos, r), id(id), material(mat), seed(rand()) {}
glm::vec3 getColor() const {
switch (material) {
case Material::Rock:
return {x : 0.19, y : 0.19, z : 0.19};
case Material::Metal:
return {x : 0.19, y : 0.19, z : 0.19};
case Material::Sand:
return {x : 0.19, y : 0.19, z : 0.19};
case Material::Gas:
return {x : 0.19, y : 0.19, z : 0.19};
case Material::Ice:
return {x : 0.19, y : 0.19, z : 0.19};
case Material::Water:
return {x : 0.19, y : 0.40, z : 0.72};
case Material::Sun:
return {x : 0.64, y : 0.67, z : 0.19};
}
return {x : 0.1, y : 0.1, z : 0.1};
: Planet(pos, id, r, Material::Rock)
{
}
Planet(const glm::vec2 &pos, int id, float r, Material mat)
: Object(pos, r), id(id), material(mat), seed(rand())
{
}
glm::vec3 getColor() const;
int id;
Material material; // for rendering and physics (can fly through sun and
// outer gas planets)
int seed; // just for rendering variation
// for rendering and physics (can fly through sun and outer gas planets)
Material material;
// just for rendering variation
int seed;
};
}

View file

@ -49,7 +49,12 @@ namespace game {
}
} while(glm::length(pos) < 0.2 && tries++ < 1000);
planets.push_back(new Planet(pos, i, 0.03 + 0.07*util::randf_0_1()));
Planet::Material mat = Planet::Material::Rock;
if (i == 0) {
mat = Planet::Material::Sun;
}
planets.push_back(new Planet(pos, i, 0.03 + 0.07*util::randf_0_1(), mat));
}
}