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" #includeusing 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