![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2012 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: DtLocalObjectManager.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 #pragma once 00012 00013 #include <vrfGuiCore/vrfGuiCore.h> 00014 #include <vrfGuiCore/DtEnvironmentalCreationData.h> 00015 #include <vrfGuiCore/DtEntityCreationData.h> 00016 #include <vrvUtil/DtVirtualBaseClass.h> 00017 #include <vrvCore/DtSelectionManager.h> 00018 #include <vrvCore/DtElementAttributes.h> 00019 #include <vrvCore/DtStateView.h> 00020 #include <vrvUtil/DtSignalConnectionManager.h> 00021 #include <vrfutil/predefinedEntityTypes.h> 00022 00023 #include <vlutil/vlSmartPointers.h> 00024 #include <boost/shared_ptr.hpp> 00025 00026 class DtEntityType; 00027 class DtVector; 00028 00029 namespace makVrv 00030 { 00031 class DtDe; 00032 class DtTacticalGraphicOverlay; 00033 struct DtVrlinkSimulatedBaseState; 00034 struct DtVrlinkSimulatedEntityState; 00035 } 00036 00039 namespace makVrf 00040 { 00041 class DtVrfObjectFacadeInterface; 00042 class DtEnvironmentalFacadeCollection; 00043 class DtEntityFacadeCollection; 00044 struct DtVrlinkSimulatedEnvironmentProcess; 00045 00052 00053 class DT_DLL_VRFGUICORE DtLocalObjectManager : public makVrv::DtVirtualBaseClass 00054 { 00055 public: 00056 DtLocalObjectManager(makVrv::DtDe& de); 00057 00058 static DtLocalObjectManager& instance(makVrv::DtDe& de); 00059 static void registerInstance(makVrv::DtDe& de, DtLocalObjectManager*); 00060 00061 virtual ~DtLocalObjectManager(); 00062 00064 virtual bool isCreating() const; 00065 00067 virtual void tacticalGraphicsVertexSelected( 00068 const makVrv::DtUniqueID& selected, const makVrv::DtUniqueID& parentElementID); 00069 00071 virtual void tacticalGraphicsVertexDeselected( 00072 const makVrv::DtUniqueID& deselected, const makVrv::DtUniqueID& parent); 00073 00075 virtual void slot_onCurrentSelectionChanged( 00076 const makVrv::DtSelectionManager::IdSet& selected, 00077 const makVrv::DtSelectionManager::IdSet& deselected); 00078 00086 virtual DtEnvironmentalFacadeCollection* create(const DtEntityType& t, 00087 const std::vector<DtVector>& localPoints, 00088 int force, 00089 const DtEnvironmentalCreationData&, 00090 int modelSet = -1); 00091 00099 virtual DtEntityFacadeCollection* create(const DtEntityCreationData&, 00100 const std::string& layer = "", int modelSet = -1); 00101 00103 virtual const makVrv::DtTacticalGraphicOverlay* createOnLayer(const std::string& layerName = ""); 00104 00106 virtual void completeStateUpdate(makVrv::DtUniqueID id); 00107 00109 virtual void setVisible(makVrv::DtUniqueID id, bool hide); 00110 00112 virtual bool isLocal(makVrv::DtUniqueID id) const; 00113 00114 virtual void updateState(makVrv::DtUniqueID id); 00115 00118 virtual void setEditable(makVrv::DtUniqueID id, bool); 00119 00122 virtual bool isEditable(makVrv::DtUniqueID id) const; 00123 00125 virtual bool isMemberOfLayer(makVrv::DtUniqueID id, const std::string& layername) const; 00126 00128 virtual void deleteLocal(makVrv::DtUniqueID id); 00129 00131 virtual void deleteAll(); 00132 00134 virtual void deleteAllFromLayer(const std::string& layername); 00135 00140 virtual void update(makVrv::DtElementID id, const std::string* name = 0, const std::vector<DtVector>& points = std::vector<DtVector>(), 00141 int* force = 0, const std::string* overlay = 0, const std::string* userData = 0, double* newHeading = 0); 00142 00144 virtual DtVector getVertexPosition(makVrv::DtElementID parent, makVrv::DtUniqueID vertexId) const; 00145 00148 virtual void create(const DtEntityType& t, int force); 00149 00151 virtual bool allSelectionIsLocal() const; 00152 00153 protected: 00155 virtual void slot_elementAttributeChangeRequested( 00156 makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr ); 00157 00158 virtual void handleElementAttributeChanged( 00159 makVrv::DtUniqueID id, const makVrv::DtElementAttribute* attr); 00160 00162 virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*); 00163 00165 virtual void completeStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*); 00166 00168 virtual void update(DtEnvironmentalFacadeCollection*, const DtVrlinkSimulatedEnvironmentProcess*); 00169 virtual void update(DtEntityFacadeCollection*, const makVrv::DtVrlinkSimulatedEntityState*); 00170 00172 virtual void finalizeObjectCreation(const DtEntityType&, std::string name, int, const std::vector<DtVector>&, double, bool, bool); 00173 virtual void slot_stoppedObjectCreation(); 00174 00175 public: 00180 boost::signal<void (bool)> signal_creating; 00181 00183 boost::signal<void (DtVrfObjectFacadeInterface*, makVrv::DtVrlinkSimulatedBaseState*)> signal_objectCreated; 00184 00186 boost::signal<void (DtVrfObjectFacadeInterface*)> signal_objectAboutToBeDeleted; 00187 00189 00190 protected: 00191 makVrv::DtDe& myDe; 00192 00193 bool myIsCreating; 00194 00196 typedef std::map<makVrv::DtUniqueID, DtVrfObjectFacadeInterface*> LocalObjects; 00197 LocalObjects myObjects; 00198 makVrv::DtSignalConnectionManager myConnections; 00199 00200 typedef std::map<makVrv::DtUniqueID, makVrv::DtVrlinkSimulatedBaseState*> LocalStateData; 00201 LocalStateData myData; 00202 }; 00203 }