Home | nevrax.com |
|
quad_grid_clip_manager.hGo to the documentation of this file.00001 00007 /* Copyright, 2001 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #ifndef NL_QUAD_GRID_CLIP_MANAGER_H 00027 #define NL_QUAD_GRID_CLIP_MANAGER_H 00028 00029 #include "nel/misc/types_nl.h" 00030 #include "nel/misc/plane.h" 00031 #include "3d/quad_grid_clip_cluster.h" 00032 #include <vector> 00033 00034 00035 namespace NL3D 00036 { 00037 00038 using NLMISC::CVector; 00039 using NLMISC::CPlane; 00040 00041 00042 class CScene; 00043 class CTransformShape; 00044 class CClipTrav; 00045 00046 // *************************************************************************** 00053 class CQuadGridClipManager 00054 { 00055 public: 00056 00058 CQuadGridClipManager(); 00059 ~CQuadGridClipManager(); 00066 void init(CScene *scene, float clusterSize, std::vector<float> maxDists, float radiusMax ); 00067 00069 void reset(); 00070 00073 void updateClustersFromCamera(CClipTrav *pClipTrav, const CVector &camPos); 00074 00075 00080 bool linkModel(CTransformShape *pTfmShp, CClipTrav *pClipTrav); 00081 00082 00083 private: 00084 00085 // One case of clusters. Each cluster is for each maxDist clip: eg: 0-100 m, 100-500 m, 500 - +oo 00086 struct CQuadGridClusterCase 00087 { 00088 std::vector<CQuadGridClipCluster*> QuadGridClipClusters; 00089 }; 00090 00091 CScene *_Scene; 00092 float _ClusterSize; 00093 float _RadiusMax; 00094 std::vector<float> _MaxDists; 00095 sint _X, _Y; 00096 sint _Width, _Height; 00097 std::vector<CQuadGridClusterCase> _QuadGridClusterCases; 00098 00099 00100 void deleteCaseModels(CClipTrav *pClipTrav, sint x, sint y); 00101 void newCaseModels(CQuadGridClusterCase &clusterCase); 00102 00103 }; 00104 00105 00106 } // NL3D 00107 00108 00109 #endif // NL_QUAD_GRID_CLIP_MANAGER_H 00110 00111 /* End of quad_grid_clip_manager.h */ |