Exemplo n.º 1
0
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;
}