www.pudn.com > 3dterrain.zip > OcTree_Terrain.h


// OcTree_Terrain.h: interface for the OcTree_Terrain class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#ifndef _OCTREE_TERRAIN_H 
#define _OCTREE_TERRAIN_H 
 
#include "init.h" 
#include "load_texture.h" 
#include "Loader.h" 
#include "Frustum.h" 
#include  
using namespace std; 
 
struct cast_pasu 
{ 
	unsigned short int left,right;			// index prveho a posledneho kresleneho stvorca 
}; 
 
struct stvorce 
{ 
	unsigned short int z, left, right;	// pouzivam 16-bitove premenne - rozsah 0 - 2^16 
}; 
 
enum eOctreeNodes 
{ 
	TOP_LEFT_FRONT,			// 0 
	TOP_LEFT_BACK,			// 1 
	TOP_RIGHT_BACK,			// etc... 
	TOP_RIGHT_FRONT, 
	BOTTOM_LEFT_FRONT, 
	BOTTOM_LEFT_BACK, 
	BOTTOM_RIGHT_BACK, 
	BOTTOM_RIGHT_FRONT 
}; 
 
class OcTree_Terrain   
{ 
public: 
	void Pocet_vrcholov(int *p); 
	int Load( char* meno); 
	void Save( char *meno); 
	int Nacitaj_vrchol(FILE* sub); 
	void Zapis_vrchol(FILE *sub); 
	void Redukcia_stvorcov(); 
	void Pridaj_stvorec(vector *q_p, int x, int z); 
	void Kresli_kocku(); 
	void Kresli_kocky(); 
	void Maz_a_nastav_pasy(); 
	void Pridaj_stvorce( int z, int left, int right); 
	void Pridaj_pasy(); 
	void Nastav_pasy(); 
	void Nastav_pasy2(); 
	int Pocet_stvorcov( vector *s); 
	bool Bod_v_kocke(XYZ stred, float pol_velkost, float *v); 
	bool Stvorec_v_kocke(XYZ stred, float polovicna_velkost, int x, int z); 
	void Vytvor_vrchol(); 
 
	OcTree_Terrain(); 
	OcTree_Terrain( float *vertex_, vector *pasy_terrain_, float velkost_, int split_x, int split_z); 
	~OcTree_Terrain(); 
	 
	// styk z okolim 
	static float *vertex;					// pole vsetkych vrcholov terenu 
	static vector *pasy_terrain;	// tieto stvorce sa kreslia 
	static int split_x, split_z; 
	static int pocet_vrcholov;				// pocet uz vytvorenych vrcholov - pouziva sa pri nacitavani 
	static int max_pocet_vrcholov; 
	static int max_stvorcov_v_kocke;		// horny limit pre tvorbu stromu 
	static CFrustum *Frustum; 
private: 
 
	bool je_deleny; 
	float size;						// velkost kocky 
	int pocet_stvorcov; 
	XYZ center;						// stred kocky 
	vector q;				// quad 
	OcTree_Terrain *vrchol[8];		// smerniky na dalsie kocky v strome 
}; 
 
 
struct zapis_OcTree_Terrain 
{ 
//	bool je_deleny; 
	float size;						// velkost kocky 
	int pocet_stvorcov; 
	XYZ center;						// stred kocky 
	int zapisanych_stvorcov; 
	//vector q;				// quad 
	//OcTree_Terrain *vrchol[8];		// smerniky na dalsie kocky v strome 
	unsigned char vrchol; 
}; 
 
#endif