commit 9d668fe95e14e95f772ba95f5ac6755eaa921f04
parent 8db867a1046322d63c436a8ecced4dc672325ea4
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Fri, 20 Jan 2012 13:53:40 +0100
Corrections sur les toits & bâtiments.
Diffstat:
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/rules/batiment.cpp b/rules/batiment.cpp
@@ -145,7 +145,6 @@ void BatimentTri::sousBatiments() {
Triangle t = c << c.minAngleCorner();
TriBool tb = w << c.minAngleCorner();
- // TODO : ajuster pour que la distance c[LEFT] -- left et c[LEFT] -- base soit similaire.
Vertex left = Segment(t[LEFT], t[TOP]).randomPos(seed, 0, 1.f/3.f, 2.f/3.f);
float dLeft = Segment(t[LEFT], left).length();
float posBase = dLeft / Segment(t[LEFT], t[RIGHT]).length();
diff --git a/rules/toit.cpp b/rules/toit.cpp
@@ -12,8 +12,10 @@ void ToitQuad::getBoundingBoxPoints() {
}
void ToitQuad::triangulation() {
- // TODO : si angles pas acceptables, plat().
- // TODO : toit plat : surélever.
+ if (c.maxAngle() > Angle::d2r(90+40) || c.minAngle() < Angle::d2r(90-40)) {
+ plat();
+ return;
+ }
switch (hash2(seed, -1) % 5) {
case 0: pointCentral(); break;
case 1: quatrePoints(); break;
@@ -86,7 +88,9 @@ void ToitQuad::deuxPointsVerticaux() {
}
void ToitQuad::plat() {
- addGPUQuad(c, Couleurs::toit);
+ Quad ch = c.offsetNormal(Dimensions::hauteurToit * 0.6f);
+ addGPUFourQuads(c, ch, Couleurs::toit);
+ addGPUQuad(ch, Couleurs::toit);
}
ToitTri::ToitTri(Triangle _c, float _height) : Chose(), c(_c), height(_height) {
@@ -99,6 +103,10 @@ void ToitTri::getBoundingBoxPoints() {
}
void ToitTri::triangulation() {
+ if (c.maxAngle() > Angle::d2r(120) || c.minAngle() < Angle::d2r(30)) {
+ plat();
+ return;
+ }
plat(); return;
switch (hash2(seed, -1) % 5) {
case 0: pointCentral(); break;
@@ -143,6 +151,7 @@ void ToitTri::deuxPointsVerticaux() {
}
void ToitTri::plat() {
+ Triangle ch = c.offsetNormal(Dimensions::hauteurToit * 0.6f);
+ addGPUThreeQuads(c, ch, Couleurs::toit);
addGPUTriangle(c, Couleurs::toit);
}
-