From 2a9fae690f7ae53398d3852edca62b34bb775abf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Thu, 19 Jan 2012 19:51:38 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Ajout=20des=20=C3=A9tages=20aux=20b=C3=A2ti?= =?UTF-8?q?ments.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 2 +- rules/architecture/batiment.cpp | 17 ++++++++++++----- rules/architecture/couleursDimensions.hh | 2 ++ rules/architecture/etage.cpp | 4 +++- rules/chose.cpp | 5 +++-- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/main.cpp b/main.cpp index 8bb2791..5418ab4 100644 --- a/main.cpp +++ b/main.cpp @@ -3,7 +3,7 @@ int main() { // Générer une tile de base std::cout << "Initial seed = " << Chose::initialSeed << std::endl; - float size = 500 * 100; + float size = 200 * 100; Vertex ne(size, size, 0); Vertex se(size, 0, 0); Vertex sw(0, 0, 0); diff --git a/rules/architecture/batiment.cpp b/rules/architecture/batiment.cpp index 35adc2c..cbc8de9 100644 --- a/rules/architecture/batiment.cpp +++ b/rules/architecture/batiment.cpp @@ -20,11 +20,18 @@ bool BatimentQuad_::split() { addChild(new BatimentQuad_(Quad(q[SE], s, n, q[NE]), true, QuadBool(qb[E],qb[S],false,qb[N]))); addChild(new BatimentQuad_(Quad(q[NW], n, s, q[SW]), true, QuadBool(qb[W],qb[N],false,qb[S]))); } else { - Quad ch = c.offsetNormal(Dimensions::hauteurEtage); - ch = ch.insetNESW(30); - c = c.insetNESW(30); - addChild(new ToitQuad(ch, Dimensions::hauteurToit)); - addChild(new EtageQuad(c,ch)); + float randEtages = floatInRange(seed, 2, 0.f, 1.f); + int maxEtages = 5; + int nbEtages = 1 + (int)(randEtages * randEtages * (maxEtages - 1)); + Quad q = c; + //ch = ch.insetNESW(30); + Quad qh; + for (int i = 0; i < nbEtages; i++) { + qh = q.offsetNormal(floatInRange(seed, 3+i, Dimensions::hauteurEtage*0.9f, Dimensions::hauteurEtage*1.1f)); + addChild(new EtageQuad(q,qh)); + q = qh; + } + addChild(new ToitQuad(qh, Dimensions::hauteurToit)); } } else { addChild(new TerrainQuad(c)); diff --git a/rules/architecture/couleursDimensions.hh b/rules/architecture/couleursDimensions.hh index 6ba0a50..69d32e0 100644 --- a/rules/architecture/couleursDimensions.hh +++ b/rules/architecture/couleursDimensions.hh @@ -20,6 +20,8 @@ public: ); }; static const unsigned int mur = 0xF1E3AD; + static const unsigned int plafond = mur; + static const unsigned int plancher = mur; static const unsigned int toit = 0x961618; static const unsigned int route = 0x363636; static const unsigned int trottoir = 0x666666; diff --git a/rules/architecture/etage.cpp b/rules/architecture/etage.cpp index 81414d9..043f858 100644 --- a/rules/architecture/etage.cpp +++ b/rules/architecture/etage.cpp @@ -30,5 +30,7 @@ bool EtageQuad::split() { } void EtageQuad::triangulation() { - addGPUOcto(c,ch, 0xF1E0E0); + addGPUFourQuads(c,ch, Couleurs::mur); + addGPUQuad(ch.offsetNormal(-30), Couleurs::plafond); + addGPUQuad(c, Couleurs::plancher); } diff --git a/rules/chose.cpp b/rules/chose.cpp index 78d1829..cbd4f37 100644 --- a/rules/chose.cpp +++ b/rules/chose.cpp @@ -141,8 +141,9 @@ void Chose::addBBPoints(const Quad q, float height) { } void Chose::updateAABB() { - float splitFactor = 5.f * LODFactor(); - float mergeFactor = 6.f * LODFactor(); + // TODO : Debug : devrait être 5.f, 6.f + float splitFactor = 2.f * LODFactor(); + float mergeFactor = 3.f * LODFactor(); float nonFacingFactor = 2.f/3.f; lod.firstBBPoint = true; getBoundingBoxPoints(); From f8cd7a6169027327eb9c9e41715cb612598ba1c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Thu, 19 Jan 2012 19:54:07 +0100 Subject: [PATCH 2/2] =?UTF-8?q?R=C3=A9glage=20du=20nombre=20maximal=20d'?= =?UTF-8?q?=C3=A9tages=20dans=20rules/architecture/couleursDimensions.hh?= =?UTF-8?q?=20.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rules/architecture/batiment.cpp | 3 +-- rules/architecture/couleursDimensions.hh | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rules/architecture/batiment.cpp b/rules/architecture/batiment.cpp index cbc8de9..2e19c96 100644 --- a/rules/architecture/batiment.cpp +++ b/rules/architecture/batiment.cpp @@ -21,8 +21,7 @@ bool BatimentQuad_::split() { addChild(new BatimentQuad_(Quad(q[NW], n, s, q[SW]), true, QuadBool(qb[W],qb[N],false,qb[S]))); } else { float randEtages = floatInRange(seed, 2, 0.f, 1.f); - int maxEtages = 5; - int nbEtages = 1 + (int)(randEtages * randEtages * (maxEtages - 1)); + int nbEtages = 1 + (int)(randEtages * randEtages * (Dimensions::maxEtages - 1)); Quad q = c; //ch = ch.insetNESW(30); Quad qh; diff --git a/rules/architecture/couleursDimensions.hh b/rules/architecture/couleursDimensions.hh index 69d32e0..84b61e5 100644 --- a/rules/architecture/couleursDimensions.hh +++ b/rules/architecture/couleursDimensions.hh @@ -39,6 +39,7 @@ public: static const unsigned int largeurRoute = 200; static const unsigned int largeurTrottoir = 140; static const unsigned int hauteurEtage = 300; + static const unsigned int maxEtages = 5; static const unsigned int hauteurToit = 200; static const unsigned int hauteurTrottoir = 20; static const unsigned int hauteurMaxBatiment = hauteurTrottoir + hauteurEtage + hauteurToit;