www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

chose.hh (2559B)


      1 #ifndef _RULES_CHOSE_HH_
      2 #define _RULES_CHOSE_HH_
      3 
      4 #include "all_includes.hh"
      5 
      6 // RectangleRoutes est un quadrilatère de routes avec des angles aux coins égaux à 90°.
      7 class Chose {
      8 public :
      9 	static unsigned int initialSeed;
     10 	unsigned int seed;
     11 	std::vector<Chose*> children;
     12 	std::vector<GPUTriangle*> triangles;
     13 	LodNode lod;
     14 
     15 public :
     16 	void display();
     17 	void displayNormals();
     18 	void drawAABB(); // DEBUG
     19 	virtual void split() {};
     20 	virtual void merge();
     21 	virtual void triangulation() { clearTriangles(); };
     22 	virtual void updateAABB();
     23 
     24 protected :
     25 	void addBBPoint(const Vertex v);
     26 	void addBBPoints(const Triangle t);
     27 	void addBBPoints(const Triangle t, float height);
     28 	void addBBPoints(const Quad q);
     29 	void addBBPoints(const Quad q, float height);
     30 	virtual void getBoundingBoxPoints() = 0;
     31 	virtual float LODFactor();
     32 	Chose();
     33 	virtual ~Chose();
     34 	inline void addEntropy(unsigned int x1) {
     35 		seed = hash2(seed, x1);
     36 	}
     37 	inline void addEntropyf(float f) {
     38 		addEntropy(float2uint(f));
     39 	}
     40 	inline void addEntropy(unsigned int x1, unsigned int x2) {
     41 		addEntropy(x1); addEntropy(x2);
     42 	}
     43 	inline void addEntropy(unsigned int x1, unsigned int x2, unsigned int x3) {
     44 		addEntropy(x1, x2); addEntropy(x3);
     45 	}
     46 	inline void addEntropy(unsigned int x1, unsigned int x2, unsigned int x3, unsigned int x4) {
     47 		addEntropy(x1, x2); addEntropy(x3, x4);
     48 	}
     49 	inline void addEntropy(Vertex v1) {
     50 		addEntropy(float2uint(v1.x), float2uint(v1.y));
     51 	}
     52 	inline void addEntropy(Vertex v1, Vertex v2) {
     53 		addEntropy(v1); addEntropy(v2);
     54 	}
     55 	inline void addEntropy(Vertex v1, Vertex v2, Vertex v3) {
     56 		addEntropy(v1, v2); addEntropy(v3);
     57 	}
     58 	inline void addEntropy(Vertex v1, Vertex v2, Vertex v3, Vertex v4) {
     59 		addEntropy(v1, v2); addEntropy(v3, v4);
     60 	}
     61 	inline void addEntropy(Quad q) {
     62 		addEntropy(q[NE], q[SE], q[SW], q[NW]);
     63 	}
     64 	inline void addEntropy(Triangle t) {
     65 		addEntropy(t[LEFT], t[TOP], t[RIGHT]);
     66 	}
     67 	void addChild(Chose* c);
     68 
     69 	void addGPUTriangle(Vertex left, Vertex top, Vertex right, unsigned int rgb);
     70 	void addGPUTriangle(Triangle t, unsigned int rgb);
     71 	void addGPUQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw, unsigned int rgb);
     72 	void addGPUQuad(Quad q, unsigned int rgb);
     73 	void addGPUFourQuads(Quad q, Quad qh, unsigned int rgb);
     74 	void addGPUThreeQuads(Triangle t, Triangle th, unsigned int rgb);
     75 	void addGPUOcto(Vertex ne, Vertex se, Vertex sw, Vertex nw,
     76 			Vertex neh, Vertex seh, Vertex swh, Vertex nwh,
     77 			unsigned int rgb);
     78 	void addGPUOcto(Quad q, Quad qh, unsigned int rgb);
     79 private:
     80 	void clearChildren();
     81 	void clearTriangles();
     82 };
     83 
     84 #endif