RexTerrainEngineNode::RexTerrainEngineNode() : TerrainEngineNode ( ), _terrain ( 0L ), _tileCount ( 0 ), _tileCreationTime ( 0.0 ), _batchUpdateInProgress( false ), _refreshRequired ( false ), _stateUpdateRequired ( false ) { // Necessary for pager object data this->setName("osgEarth.RexTerrainEngineNode"); // unique ID for this engine: _uid = Registry::instance()->createUID(); // always require elevation. _requireElevationTextures = true; // install an elevation callback so we can update elevation data _elevationCallback = new ElevationChangedCallback( this ); // static shaders. if ( Registry::capabilities().supportsGLSL() ) { osg::StateSet* stateset = getOrCreateStateSet(); VirtualProgram* vp = VirtualProgram::getOrCreate(stateset); vp->setName("RexTerrainEngineNode"); vp->setIsAbstract(true); // cannot run by itself, requires additional children Shaders package; package.load(vp, package.SDK); } // TODO: replace with a "renderer" object that can return statesets // for different layer types, or something. _imageLayerStateSet = new osg::StateSet(); }