Ajout des étages aux bâtiments.

This commit is contained in:
Georges Dupéron 2012-01-19 19:51:38 +01:00
parent 47a70fdee5
commit 2a9fae690f
5 changed files with 21 additions and 9 deletions

View File

@ -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);

View File

@ -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));

View File

@ -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;

View File

@ -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);
}

View File

@ -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();