[Change] Actually set planet sizes (but still 1 size per type).

This commit is contained in:
Allanis 2017-11-24 22:17:42 +00:00
parent 0025c8833b
commit 6e743e6027
4 changed files with 27 additions and 27 deletions

View File

@ -193,9 +193,10 @@ void L3D::MainLoop(void) {
HyperspaceTo(&s);
/* Linked list eh... Put player at planet f. */
const float zpos = EARTH_RADIUS * 7;
Frame* pframe = *(++(++(++(++(Space::rootFrame->m_children.begin())))));
player->SetFrame(pframe);
player->SetPosition(vector3d(0, 100000, 10000000.0));
player->SetPosition(vector3d(0, zpos*0.1, zpos));
for(int i = 0; i < 4; i++) {
Ship* body = new Ship(ShipType::SLEEK/*LADYBIRD*/);
@ -203,7 +204,7 @@ void L3D::MainLoop(void) {
snprintf(buf, sizeof(buf), "X%c-0%02d", "A"+i, i);
body->SetLabel(buf);
body->SetFrame(pframe);
body->SetPosition(vector3d(i*2000, 100000, 10001000));
body->SetPosition(vector3d(i*2000, zpos*0.1, zpos+1000));
Space::AddBody(body);
}
@ -211,7 +212,7 @@ void L3D::MainLoop(void) {
SpaceStation* body = new SpaceStation();
body->SetLabel("Poemi-chan's Folly");
body->SetFrame(pframe);
body->SetPosition(vector3d(5000, 100000, 9990000.0));
body->SetPosition(vector3d(5000, zpos*0.1, zpos-10000));
Space::AddBody(body);
}

View File

@ -5,9 +5,8 @@
#include "world_view.h"
Planet::Planet(StarSystem::SBody* sbody) : Body() {
radius = 6378135.0;
pos = vector3d(0, 0, 0);
geom = dCreateSphere(0, radius);
geom = dCreateSphere(0, sbody->radius);
dGeomSetData(geom, static_cast<Body*>(this));
this->sbody = *sbody;
this->sbody.children.clear();
@ -29,8 +28,8 @@ void Planet::SetPosition(vector3d p) {
}
void Planet::SetRadius(double radius) {
this->radius = radius;
dGeomSphereSetRadius(geom, radius);
assert(0);
//dGeomSpehereSetRadius(geom, radius);
}
static void subdivide(vector3d& v1, vector3d& v2, vector3d& v3, vector3d& v4, int depth) {
@ -551,7 +550,7 @@ void Planet::DrawGasGiant(void) {
void Planet::Render(const Frame* a_camFrame) {
glPushMatrix();
double rad = radius;
double rad = sbody.radius;
vector3d fpos = GetPositionRelTo(a_camFrame);
double apparent_size = rad / fpos.Length();

View File

@ -10,7 +10,7 @@ public:
virtual void SetPosition(vector3d p);
virtual vector3d GetPosition(void);
void SetRadius(double radius);
double GetRadius(void) { return radius; }
double GetRadius(void) { return sbody.radius; }
virtual void Render(const Frame* camFrame);
virtual void SetFrame(Frame* f);
virtual bool OnCollision(Body* b, Uint32 flags) { return true; }
@ -19,7 +19,6 @@ private:
void DrawGasGiant(void);
vector3d pos;
double radius;
dGeomID geom;
StarSystem::SBody sbody;
GLuint crudDList;

View File

@ -16,7 +16,7 @@ float StarSystem::starColors[7][3] = {
static const struct SBodySubTypeInfo {
float mass;
float radius;
float radius; /* Sol radii for stars, earth radii for planets. */
const char *description;
const char *icon;
float tempMin, tempMax;
@ -61,59 +61,59 @@ static const struct SBodySubTypeInfo {
"icons/object_brown_dwarf.png"
},
{
0, 0, "Small gas giant",
0, 3.9, "Small gas giant",
"icons/object_planet_small_gas_giant.png"
},
{
0, 0, "Medium gas giant",
0, 9.5, "Medium gas giant",
"icons/object_planet_medium_gas_giant.png"
},
{
0, 0, "Large gas giant",
0, 11.1, "Large gas giant",
"icons/object_planet_large_gas_giant.png"
},
{
0, 0, "Very large gas giant",
0, 15.0, "Very large gas giant",
"icons/object_planet_large_gas_giant.png"
},
{
0, 0, "Small, rocky dwarf planet",
0, 0.26, "Small, rocky dwarf planet",
"icons/object_planet_dwarf.png"
},
{
0, 0, "Small, rocky planet with a thin atmosphere",
0, 0.52, "Small, rocky planet with a thin atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Rocky planet with liquid water and a nitrogen atmosphere",
0, 1.0, "Rocky planet with liquid water and a nitrogen atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Rocky planet with a carbon dioxide atmosphere",
0, 1.0, "Rocky planet with a carbon dioxide atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Rocky planet with a methane atmosphere",
0, 1.0, "Rocky planet with a methane atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Rocky planet with running water and a thick nitrogen atmosphere",
0, 1.0, "Rocky planet with running water and a thick nitrogen atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Rocky planet with a thick carbon dioxide atmosphere",
0, 1.0, "Rocky planet with a thick carbon dioxide atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Rocky planet with a thick methane atmosphere",
0, 1.0, "Rocky planet with a thick methane atmosphere",
"icons/object_planet_small.png"
},
{
0, 0, "Highly volcanic world",
0, 1.0, "Highly volcanic world",
"icons/object_planet_small.png"
},
{
0, 0, "World with indigenous life and an oxygen atmosphere",
0, 1.0, "World with indigenous life and an oxygen atmosphere",
"icons/object_planet_life.png"
}
};
@ -270,7 +270,7 @@ StarSystem::StarSystem(int sector_x, int sector_y, int system_idx) {
planet->seed = rand.Int32();
planet->temp = 0;
planet->parent = primary;
planet->radius = EARTH_RADIUS;
//planet->radius = EARTH_RADIUS*bodyTypeInfo[type].radius;
planet->mass = mass * EARTH_MASS;
planet->orbit.eccentricity = rand.pdrand(3);
planet->orbit.semiMajorAxis = ((i+1)*0.1)*AU;
@ -395,6 +395,7 @@ void StarSystem::SBody::PickPlanetType(SBody* star, double distToPrimary, MTRand
/* Kinda crappy. */
if((emass > 0.8) && (!rand(0,15))) type = TYPE_PLANET_HIGHLY_VOLCANIC;
}
radius = EARTH_RADIUS*bodyTypeInfo[type].radius;
/* Generate moons. */
if(genMoons) {
std::vector<float>* disc = AccreteDisc(2*sqrt(emass), 0.001, rand);
@ -407,7 +408,7 @@ void StarSystem::SBody::PickPlanetType(SBody* star, double distToPrimary, MTRand
moon->seed = rand.Int32();
moon->temp = 0;
moon->parent = this;
moon->radius = EARTH_RADIUS;
//moon->radius = EARTH_RADIUS*bodyTypeInfo[type].radius;
moon->mass = mass * EARTH_MASS;
moon->orbit.eccentricity = rand.pdrand(3);
moon->orbit.semiMajorAxis = ((i+1)*0.001)*AU;