Main Page   Namespace List   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ExCOctree.h

Go to the documentation of this file.
00001 /*
00002  * ExNihilo 3D Engine
00003  * 
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  *
00018  * Please read AUTHORS file !!!
00019  * 
00020  * $Id: ExCOctree.h,v 1.4 2002/06/16 00:51:04 binny Exp $
00021  *
00022  */
00023 
00024 #ifndef __EXCOCTREE_H__
00025 #define __EXCOCTREE_H__
00026 //--------------------------------
00027 // File to include
00028 //--------------------------------
00029 #include "ExDefine.h"
00030 #include "ExMath.h"
00031 #include "ExCFrustum.h"
00032 #include "ExManagerTexture.h"
00033 #include "ExCGizmoRectangle.h"
00034 #define MAX_MESH_IN_CUBE                200
00035 #define MAX_SUBDIVISION                 5
00036 //--------------------------------
00037 class ExCOctree 
00038 {
00039 private:
00040 
00041 //--------------------------------
00042 // Variable
00043 //--------------------------------
00044         ExManagerTexture        *ManagerTexture;
00045     ExCGizmoRectangle   m_GLobalBox;
00046         long                            m_NumberMesh;
00047         GLuint                          m_GlListId;
00048         int                                     m_SubDivisionLevel;
00049         bool                            m_ShowOctreeSubdivision;
00050         ExCFrustum                      Frustrum;
00051         double                          maxsegment;
00052         
00053 
00054         ExCOctree *A,*B,*C,*D,*E,*F,*G,*H;
00055         void BuildFirstBox(void);
00056         void BuildBox(ExCVertex center,double size);
00057         void BuilList(void);
00058         void SubDivise(void);
00059         bool MeshInOctree(ExCMesh Mesh,ExCOctree *octree);
00060 public:
00061 //--------------------------------
00062 // Constructor // Destructor                              
00063 //--------------------------------
00064         ExCOctree(void);
00065         ExCOctree(std::vector<ExCMesh> VecMesh);
00066         ~ExCOctree(void);
00067 //--------------------------------
00068 // Methode
00069 //--------------------------------
00070         std::vector<ExCMesh> m_VecMesh;
00071         std::vector<ExCMesh>::iterator m_ItVecMesh;
00072 
00073         inline void SetSubDivisionLevel(long SubDivisionLevel){m_SubDivisionLevel=SubDivisionLevel;}
00074         inline long GetSubDivisionLevel(void){return m_SubDivisionLevel;}
00075         inline void SetNumberMesh(long NumberMesh){m_NumberMesh=NumberMesh;}
00076         inline long GetNumberMesh(void){return m_NumberMesh;}
00077         inline void SetManagerTexture(ExManagerTexture * Texture){ManagerTexture=Texture;}
00078         inline void ShowOctreeSubdivision(void){m_ShowOctreeSubdivision=true;}
00079         inline void HideOctreeSubdivision(void){m_ShowOctreeSubdivision=false;}
00080         void Build(std::vector<ExCMesh> VecMesh);
00081         void Draw(void);
00082 };
00083 #endif //__EXCOCTREE_H__

Generated on Tue Aug 6 20:27:09 2002 for ExNihilo by doxygen1.2.17