VR-Forces 4.0.4 Class Documentation
include/vantageTerrainImplementation/metaflightTerrainSourcePager.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00009 #pragma once
00010 
00011 #include "vantageTerrainImplementation/vantageTerrainImplementationDefines.h"
00012 #include "vrvOsg/DtHierarchicalPagedLod.h"
00013 #include "vantageTerrainImplementation/boundingVolumeTerrainSourcePager.h"
00014 #include "vantageTerrainImplementation/pageInVisitor.h"
00015 #include "vantageTerrainImplementation/boundingVolumeTerrainSourceTracker.h"
00016 
00017 struct DT_DLL_vantageTerrainImplementation DtMetaflightBoundingInfo
00018 {
00019    DtNodeBoundingInfoPtr boundingInfo;
00022    bool boundingInfoFromGeometry; 
00023 };
00024 
00025 typedef std::map<makVrv::DtHierarchicalPagedLod*, DtMetaflightBoundingInfo> DtHierNodeBoundingVolumeMap;
00026 
00029 class DT_DLL_vantageTerrainImplementation DtMetaflightTerrainSourcePager : public DtBoundingVolumeTerrainSourcePager
00030 {
00031 public:
00032 
00033    DtMetaflightTerrainSourcePager(DtVantageTerrainEngine* terrainEngine, 
00034       osg::Group* rootNode);
00035 
00036    virtual ~DtMetaflightTerrainSourcePager();
00037 
00039    virtual DtTerrainSourceTracker* createTerrainSourceTracker();
00040 
00041    virtual bool pageInGeometry(const DtTerrainPagingGeometryPtr geometry,
00042       const unsigned int intersectId = 0);
00043 
00044    virtual bool pageOutNodes(std::list<DtNodeId>& nodesToRemove);
00045 
00046    virtual void updateTerrain(const unsigned int intersectId = 0);
00047 
00048    virtual void updatePageTracker(const unsigned int intersectId = 0);
00049 
00052    static DtTerrainSourcePager* terrainChooserFunction(osg::Node& node,
00053       DtVantageTerrainEngine* terrainEngine);
00054 
00055 protected:
00056 
00057    class DtMetaflightTerrainVisitor : public DtBoundingVolumeActivePageVisitor
00058    {
00059    public:
00060       DtMetaflightTerrainVisitor();
00061       virtual ~DtMetaflightTerrainVisitor();
00062 
00064       virtual void apply(osg::Group& node);
00065 
00066    protected:
00067       virtual void indent();
00068 
00069    public:
00070       int myIndentLevel;
00071    };
00072 
00077 
00078    static DtNodeId osgNodeId(makVrv::DtHierarchicalPagedLod* node);
00079    static makVrv::DtHierarchicalPagedLod* nodeFromId(DtNodeId nodeId);
00081 
00082 protected:
00083    osg::Group* myRootNode;
00084 
00085 
00088    DtHierNodeBoundingVolumeMap myPagedInNodes;
00089    DtHierNodeBoundingVolumeMap myPagedOutNodes;
00090 };
00091 
00093 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)