00001 #ifndef __TerrainGeometry__
00002 #define __TerrainGeometry__
00003
00004 #include <osg/Geometry>
00005
00006 #include "Log.h"
00007
00008
00009 class TerrainGeometry
00010 {
00011 public:
00012 TerrainGeometry(int _numCells, float _size, float _skirtHeight=500);
00013 bool AddTile(osg::Geode* geode, int lodDelta);
00014 void ResetGeometryCounters();
00015
00016 private:
00017 static const int maxLevels=16;
00018
00019 int numCellsMax;
00020 float size, skirtHeight;
00021 int geometryCounter[maxLevels];
00022 int numInstances[maxLevels];
00023
00024 osg::ref_ptr<osg::Vec3Array> vertexGrid[maxLevels];
00025 osg::ref_ptr<osg::Geometry>*terrainTileGeometry[maxLevels];
00026 Log myLog;
00027
00028
00029 osg::Geometry* CreateTileTemplate(int numCells, int lodDelta);
00030 osg::Vec3Array* CreateVertexArray(int numCells);
00031
00032 };
00033
00034 #endif