Main Page Namespace List Class Hierarchy Alphabetical List Data Structures File List Namespace Members 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__