2011-m2s3-city-builder/rules/chose.cpp
Yoann 5092f6271d Ajout d'une fonction permettant de dessiner un objet à huit sommets
addOcto(...) fonctionne de la même manière que addTriangle et addQuad
(précédement ajoutée).

Dessin d'un pavé à la place de la maison, jardin etc lorsqu'il n'y a pas
de split().
2011-12-21 11:18:06 +01:00

54 lines
1.5 KiB
C++

#include "all_includes.hh"
Chose::Chose() : seed(initialSeed), children() {}
std::ostream& operator<<(std::ostream& os, const Chose* r) {
return os << *r;
}
std::ostream& operator<<(std::ostream& os, const Chose& r) {
(void)r; // unused
return os << "Chose";
}
void Chose::addChild(Chose* c) {
children.push_back(c);
// TODO : Ajouter c dans une file d'attente des éléments pouvant être split.
}
void Chose::addTriangle(Triangle* t) {
triangles.push_back(t);
// TODO : Ajouter t dans la liste des triangles à envoyer au GPU.
}
void Chose::addQuad(Vertex u, Vertex v, Vertex w, Vertex x, char r, char g, char b) {
this->addTriangle(new Triangle(u,x,w,r,g,b));
this->addTriangle(new Triangle(w,v,u,r,g,b));
}
void Chose::addOcto(Vertex a, Vertex b, Vertex c, Vertex d,
Vertex e, Vertex f, Vertex g, Vertex h, char red, char green, char blue) {
this->addQuad(d,c,b,a,red,green,blue);
this->addQuad(d,h,g,c,red,green,blue);
this->addQuad(c,g,f,b,red,green,blue);
this->addQuad(b,f,e,a,red,green,blue);
this->addQuad(a,e,h,d,red,green,blue);
this->addQuad(h,g,f,e,red,green,blue);
}
void Chose::display() {
if (children.size() > 0) {
std::vector<Chose*>::iterator it;
for (it = children.begin(); it != children.end(); ++it) {
(*it)->display();
}
} else {
std::vector<Triangle*>::iterator it;
for (it = triangles.begin(); it != triangles.end(); ++it) {
(*it)->display();
}
}
}
unsigned int Chose::initialSeed = random_seed();