![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtOsgOverlayManager.h,v $ $Revision: 1.13 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #include <vrvOsg/vrvOsg.h> 00014 #include <vrvCore/DtDe.h> 00015 #include <vrvOsg/DtOsgTerrainOverlayOperation.h> 00016 00017 #include <osg/Group> 00018 #include <osg/Switch> 00019 00020 #include <vector> 00021 #include <deque> 00022 00023 namespace makVrv 00024 { 00028 class DT_DLL_VRVOSG DtOsgTerrainOverlayManager 00029 { 00030 typedef std::deque<DtOsgTerrainOverlayOperation> OverlayList; 00031 00032 public: 00033 DtOsgTerrainOverlayManager(DtDe& de, osg::Node* terrain); 00034 00035 ~DtOsgTerrainOverlayManager(); 00036 00038 virtual void setTerrain(osg::Node* terrain); 00039 00041 virtual void setOverlay(DtOsgTerrainOverlayOperation overlay); 00042 00044 virtual void clearOverlays(); 00045 00047 virtual void removeOverlay(DtTerrainOverlayOperation::OverlayType type); 00048 00050 virtual void setOverlayScale(DtOsgTerrainOverlayOperation::OverlayType type, const std::vector<double> scale); 00051 00053 virtual void setOverlayOffset(DtOsgTerrainOverlayOperation::OverlayType type, const std::vector<double> offset); 00054 00056 virtual void setWrapMode(DtOsgTerrainOverlayOperation::OverlayType type, int); 00057 00059 virtual void setBlendMode(DtOsgTerrainOverlayOperation::OverlayType type, int); 00060 00062 virtual void setRasterLayerPosition(DtOsgTerrainOverlayOperation::OverlayType type, int); 00063 00065 virtual OverlayList overlays() const; 00066 00068 virtual std::string overlayDefinition(DtTerrainOverlayOperation::OverlayType type) const; 00069 00071 virtual std::vector<double> overlayScale(DtTerrainOverlayOperation::OverlayType type) const; 00072 00074 virtual std::vector<double> overlayOffset(DtTerrainOverlayOperation::OverlayType type) const; 00075 00077 virtual DtTerrainOverlayOperation defaultOverlay(DtOsgTerrainOverlayOperation::OverlayType type); 00078 00080 virtual DtTerrainOverlayOperation currentOverlay(DtOsgTerrainOverlayOperation::OverlayType type); 00081 00086 virtual int maxTextureUnits(); 00087 protected: 00089 void initializeGraph(); 00090 00092 void restoreGraph(); 00093 00095 virtual void applyOverlays(bool reset = true); 00096 00097 protected: 00098 OverlayList myOverlays; 00099 00100 osg::ref_ptr<osg::Node> myTerrainNode; 00101 osg::StateSet* myOriginalState; 00102 std::vector<std::string> myOriginalDescriptions; 00103 00104 DtDe& myDe; 00105 00106 bool myInitializedFlag; 00107 00108 int myMaxTextureUnits; 00109 }; 00110 } 00111