commit 8178e0e4ba9c8cda235b1f662deaae75a0b9c071
parent 546781be3649e910386af97d6434857c5aab3bed
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Mon, 16 Jan 2012 15:36:01 +0100
Merge branch 'master' of https://github.com/jsmaniac/2011-m2s3-city-builder
Diffstat:
9 files changed, 52 insertions(+), 35 deletions(-)
diff --git a/main.cpp b/main.cpp
@@ -5,7 +5,7 @@
int main() {
// Générer une tile de base
std::cout << "Initial seed = " << Chose::initialSeed << std::endl;
- float size = 20000;
+ float size = 22000;
Vertex ne(size, size, 0);
Vertex se(size, 0, 0);
Vertex sw(0, 0, 0);
diff --git a/rules/architecture/quartier.cpp b/rules/architecture/quartier.cpp
@@ -204,7 +204,7 @@ void QuartierTri::trapeze() {
void QuartierTri::batiments() {
return;
- float hauteurTrottoir = 20; // TODO : factoriser + ajouter ça à la hauteur max d'un bâtiment dans les autres calculs.
+ float hauteurTrottoir = 14; // TODO : factoriser + ajouter ça à la hauteur max d'un bâtiment dans les autres calculs.
Triangle ttrottoir = c.insetLTR(250);
Triangle tinterieur = ttrottoir.insetLTR(140);
Triangle tbatiments = tinterieur.offsetNormal(hauteurTrottoir);
diff --git a/rules/batiment/batimentquad.cpp b/rules/batiment/batimentquad.cpp
@@ -11,7 +11,7 @@ void BatimentQuad::getBoundingBoxPoints() {
bool BatimentQuad::split() {
if(proba(seed, 0, 1, 10)) {
- addChild(new BatimentQuadMaisonPont(c,800));
+ addChild(new BatimentQuadMaisonPont(c,3));
} else {
addChild(new BatimentQuadJardin(c));
diff --git a/rules/batiment/batimentquadmaison.hh b/rules/batiment/batimentquadmaison.hh
@@ -9,8 +9,8 @@ class BatimentQuadMaison : public Chose {
Quad c;
public :
- static const int minHeight = 400;
- static const int maxHeight = 800;
+ static const int minHeight = 250;
+ static const int maxHeight = 350;
BatimentQuadMaison(Quad c);
virtual void triangulation();
diff --git a/rules/batiment/batimentquadmaisonpont.cpp b/rules/batiment/batimentquadmaisonpont.cpp
@@ -1,45 +1,48 @@
#include "all_includes.hh"
-BatimentQuadMaisonPont::BatimentQuadMaisonPont(Quad _c, float _height) : Chose(), c(_c), height(_height) {
+BatimentQuadMaisonPont::BatimentQuadMaisonPont(Quad _c, int level) : Chose(), c(_c), level(level) {
addEntropy(c);
+ levelHeight = 300;
}
void BatimentQuadMaisonPont::getBoundingBoxPoints() {
addBBPoints(c);
- addBBPoints(c + Vertex(0,0,height)); // TODO
+ addBBPoints(c + Vertex(10,10,level*levelHeight)); // TODO
}
bool BatimentQuadMaisonPont::split() {
+ int ih;
Quad q = c.makeParallelogram();
if(Segment(q[NE],q[NW]).length() < Segment(q[NE],q[SE]).length())
q = q << 1;
float partLength = Segment(q[NE],q[NW]).length() / 3;
- float partHeight = 2.5f * height / 3.f;
Quad qa = q.inset(E,2*partLength);
Quad qb = q.inset(W,2*partLength);
Quad qc = q.inset(E, partLength).inset(W, partLength);
Quad qh = q;
addChild(new BatimentQuadJardin(c));
- addChild(new BatimentQuadBlock(qa,qa + Vertex(0,0,partHeight)));
- addChild(new BatimentQuadBlock(qb,qb + Vertex(0,0,partHeight)));
- addChild(new BatimentQuadBlock((qh + Vertex(0,0,partHeight)),qh + Vertex(0,0,2*partHeight)));
- //addChild(new BatimentQuadPont(qc,partHeight));
- addChild(new BatimentQuadToit(qh + Vertex(0,0,2*partHeight),160));
+ addChild(new BatimentQuadBlock(qa,qa + Vertex(0,0,levelHeight)));
+ addChild(new BatimentQuadBlock(qb,qb + Vertex(0,0,levelHeight)));
+ for(ih=1;ih<level;ih++)
+ addChild(new BatimentQuadBlock((qh + Vertex(0,0,ih*levelHeight)),qh + Vertex(0,0,(ih+1)*levelHeight)));
+ //addChild(new BatimentQuadPont(qc,levelHeight));
+ addChild(new BatimentQuadToit(qh + Vertex(0,0,(ih+1)*levelHeight),160));
return true;
}
void BatimentQuadMaisonPont::triangulation() {
- float h = 2.5f * height / 3.f;
+ float h = level*levelHeight / 3.f;
Quad q = c.makeParallelogram();
Quad qh = q + Vertex(0,0,h);
+ float htoit = Segment(q[SE],q[NE]).length() / 5;
addGPUQuad(c,0x808080);
addGPUOcto(q,qh,Couleurs::mur);
- Vertex ce = qh[SE] + (qh[NE] - qh[SE])/2 + Vertex(0,0,0.5f * height / 3.f);
- Vertex cw = qh[SW] + (qh[NW] - qh[SW])/2 + Vertex(0,0,0.5f * height / 3.f);
+ Vertex ce = qh[SE] + (qh[NE] - qh[SE])/2 + Vertex(0,0,htoit);
+ Vertex cw = qh[SW] + (qh[NW] - qh[SW])/2 + Vertex(0,0,htoit);
addGPUTriangle(qh[NW],cw,qh[SW],Couleurs::mur);
addGPUTriangle(qh[SE],ce,qh[NE],Couleurs::mur);
diff --git a/rules/batiment/batimentquadmaisonpont.hh b/rules/batiment/batimentquadmaisonpont.hh
@@ -7,11 +7,12 @@
class BatimentQuadMaisonPont: public Chose {
private :
Quad c;
- float height;
+ int level;
+ float levelHeight;
public :
- BatimentQuadMaisonPont(Quad c, float height);
+ BatimentQuadMaisonPont(Quad c, int level);
virtual bool split();
virtual void triangulation();
virtual void getBoundingBoxPoints();
diff --git a/rules/batiment/batimentquadmur.cpp b/rules/batiment/batimentquadmur.cpp
@@ -17,7 +17,7 @@ void BatimentQuadMur::setWindow(bool val) {
Quad q = Quad(ch[NE],c[NE],c[NW],ch[NW]);
int lr = (q.length(S) - 120)/2;
- Quad wFront = q.insetNESW(90,lr,120,lr);
+ Quad wFront = q.insetNESW(40,lr,120,lr);
Quad wBack = wFront.offsetNormal(28);
windowPos = Quad(wFront[SE],wBack[SE],wBack[SW],wFront[SW]);
windowPosh = Quad(wFront[NE],wBack[NE],wBack[NW],wFront[NW]);
diff --git a/view.cpp b/view.cpp
@@ -9,7 +9,7 @@ View::View(Chose* _root)
fogColor[1] = 0.5;
fogColor[2] = 0.5;
fogColor[3] = 1.0;
- density = 0.00001;
+ density = 0.000015;
initWindow();
mainLoop();
}
@@ -92,20 +92,10 @@ void View::displayAxes() {
glEnable(GL_LIGHTING);
}
-void View::renderScene(int lastTime, int currentTime) {
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
-
- camera.animation(currentTime-lastTime);
- camera.setCamera();
- lod.setCamera(camera.cameraCenter);
-
- setLight();
- //displayAxes();
- int z = 40000;
- int d = 70000;
+void View::setSkybox() {
+ int z = 40000;
+ int d = 160000;
+ glDisable(GL_FOG);
glDisable(GL_LIGHTING);
glPushMatrix();
glTranslated(camera.cameraCenter.x,camera.cameraCenter.y,0);
@@ -128,8 +118,30 @@ void View::renderScene(int lastTime, int currentTime) {
glVertex3f(d,-d,z+d);
glVertex3f(-d,-d,z+d);
glEnd();
+ glBegin(GL_QUADS);
+ glColor3ub(12,64,12);
+ glVertex3f(-d,d,z-d);
+ glVertex3f(d,d,z-d);
+ glVertex3f(d,-d,z-d);
+ glVertex3f(-d,-d,z-d);
+ glEnd();
glPopMatrix();
glEnable(GL_LIGHTING);
+ glEnable(GL_FOG);
+}
+
+void View::renderScene(int lastTime, int currentTime) {
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
+
+ camera.animation(currentTime-lastTime);
+ camera.setCamera();
+ lod.setCamera(camera.cameraCenter);
+
+ setLight();
+ setSkybox();
glBegin(GL_TRIANGLES);
root->display();
diff --git a/view.hh b/view.hh
@@ -38,7 +38,7 @@ private :
public :
Camera camera;
static const int frontFrustum = 1;
- static const int backFrustum = 160000; // 1km
+ static const int backFrustum = 400000; // 1km
private:
Lod lod;
GLfloat fogColor[4];
@@ -57,6 +57,7 @@ public :
private :
void setLight();
+ void setSkybox();
};
#endif