![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtForestObject.h,v $ $Revision: 1.20 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtForestObject_H_ 00014 #define DtForestObject_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvCore/DtTreeRecord.h> 00018 #include <vrvCore/DtAgentUpdateResolver.h> 00019 #include <vrvUtil/DtVirtualBaseClass.h> 00020 #include <map> 00021 #include <string> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtTreeModel; 00027 class DtModelInstance; 00028 class DtModelDefinition; 00029 00032 class DT_DLL_VRVCORE DtForestObject 00033 { 00034 00035 public: 00036 00038 friend class DtForestObjectClassesCreator; 00039 friend class DtForestCreator; 00040 00041 typedef std::map<DtUniqueID, DtTreeRecord> TreeRecordMap; 00042 typedef std::map<std::string, DtTreeModel*> TreeModelMap; 00043 00045 virtual ~DtForestObject(); 00046 00050 00051 00054 void addTree(const DtTreeRecord& record); 00055 00057 virtual void removeTree(DtUniqueID treeId) = 0; 00058 00060 virtual void removeAllTrees() = 0; 00061 00064 virtual void setTreeClippingPlane(float fFar) = 0; 00065 00067 virtual void getTreeClippingPlane( float& fFar) = 0; 00068 00071 virtual void setTreeLodDistances(float fNear, float fFar) = 0; 00072 00075 virtual void getTreeLodDistances(float& fNear, float& fFar) = 0; 00076 00078 virtual void setPerformanceProfile(int profile) = 0; 00079 00081 00085 00086 00088 virtual void addUniqueTree(const DtTreeRecord& record) = 0; 00089 00091 virtual DtTreeRecord* findTreeRecord(DtUniqueID id) = 0; 00092 00094 virtual DtTreeModel* findTreeModel( const std::string& modelDef) = 0; 00095 00097 virtual DtModelInstance* findModelInstance( const std::string& modelDef) = 0; 00098 00100 virtual DtModelDefinition* findModelDefinition(const std::string& modelDef); 00101 00103 virtual const TreeRecordMap& treeRecordMap() const; 00104 00106 00108 virtual DtDe& de(); 00109 00110 protected: 00111 00113 DtForestObject(DtDe& de, DtUniqueID id); 00114 00116 virtual bool createTree(const DtTreeRecord& record) = 0; 00117 00119 virtual void slot_treeModelInstanceToBeDestroyed(const std::string& modelDef) = 0; 00120 00122 virtual void removeTreeModel( const std::string& modelDef) = 0; 00123 00125 virtual void slot_treeModelInstanceCreated(const std::string& modelDef) = 0; 00126 00128 virtual DtTreeModel* castUpdaterToTreeModel( DtAgentUpdateResolverInterface* updater ); 00129 00130 protected: 00131 00132 DtDe& myDe; 00133 TreeRecordMap myTreeRecordMap; 00134 mutable TreeModelMap myTreeModelMap; 00135 00136 }; 00137 00140 class DT_DLL_VRVCORE DtForestCreator : public DtVirtualBaseClass 00141 { 00142 00143 public: 00144 00147 static DtForestCreator& instance(DtDe& de); 00148 00150 static void registerInstance(DtDe& de, DtForestCreator* instance = 0); 00151 00153 virtual DtForestObject* create(DtDe& de, DtUniqueID id); 00154 00155 }; 00156 00157 } 00158 00159 #endif 00160