void RDC::G(Mesh& m) const { Mesh m2(Mesh::Box(q.p1, q.p2, q.p3, q.p4, h)); m.merge(m2); addDoor(m, q.p1, q.p2, q.p3, q.p4, h); // La grammaire commence ici int e = rand()%100; if (e < dif) { int e = rand() % 100; if (e < 95){ float window_size = 1.5f + (float)(rand() % 100) / 100.f; Etage(q.p1 + Vec3<float>(0.0, 0.0, h), q.p2 + Vec3<float>(0.0, 0.0, h), q.p3 + Vec3<float>(0.0, 0.0, h), q.p4 + Vec3<float>(0.0, 0.0, h), h, dif, type, 0.f, false, 0, window_size).G(m); } else{ EtageCircle(q.p1 + Vec3<float>(0.0, 0.0, h), q.p2 + Vec3<float>(0.0, 0.0, h), q.p3 + Vec3<float>(0.0, 0.0, h), q.p4 + Vec3<float>(0.0, 0.0, h), h, dif+20, 0).G(m); } } else { Toit(q.p1 + Vec3<float>(0.0, 0.0, h), q.p2 + Vec3<float>(0.0, 0.0, h), q.p3 + Vec3<float>(0.0, 0.0, h), q.p4 + Vec3<float>(0.0, 0.0, h), h,0.f,0).G(m); } }
Mesh RezDeChaussee::generate() const { QVector<PolyangleHauteur> polyangles; polyangles << PolyangleHauteur(base, hauteur) << PolyangleHauteur(base, hauteur + hauteurRDC); MeshBuilder mb; Mesh rdcMesh = mb.generationPolyanglesRelies(polyangles); Etage etage = Etage(base, hauteur + hauteurRDC, hauteurRDC); rdcMesh.merge(etage.generate()); return rdcMesh; }