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