![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtConnection.h,v $ $Revision: 1.40 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvVrl/vrvVrl.h> 00016 #include <vrvCore/DtDriver.h> 00017 #include <vrvCore/DtBaseConnection.h> 00018 #include <vrvUtil/DtRandomNumberGenerator.h> 00019 #include <vrvCore/DtSelectionManager.h> 00020 #include <vrvCore/DtViewStateProcessor.h> 00021 00022 #include <boost/signals.hpp> 00023 00024 #include <map> 00025 #include <string> 00026 00027 class DtEntityType; 00028 00029 namespace makVrv 00030 { 00031 class DtAgentManagerInterface; 00032 class DtCoordinateSystem; 00033 class DtDisplayUnitsConverter; 00034 class DtElementChanges; 00035 class DtEntityAppearanceMapper; 00036 class DtEntityAppearanceMapperFactory; 00037 class DtEntityAppearanceMapperFactoryCreator; 00038 class DtMouseState; 00039 class DtSharedSettingsManager; 00040 00043 class DT_DLL_VRVVRL DtConnection : public DtBaseConnection 00044 { 00045 public: 00046 00048 DtConnection(DtAgentManagerInterface& aSceneInterface, 00049 const DtCoordinateSystem& coordSystem, 00050 const DtEntityAppearanceMapperFactoryCreator& appFactoryCreator, 00051 DtSharedSettingsManager& settingsManager); 00052 00054 virtual ~DtConnection(); 00055 00057 const DtEntityAppearanceMapper* findAppearanceMapper(const DtEntityType& type); 00058 00059 virtual void coordinateSystemChanged(const std::string& coordinateName, 00060 const std::string& coordinateOrigin ); 00061 00063 const DtCoordinateSystem& coordinateSystem() const; 00064 00066 const DtDisplayUnitsConverter& displayUnitConverter() const; 00067 00072 virtual bool connect() = 0; 00073 00076 virtual bool connected() const; 00077 00082 virtual bool disconnect() = 0; 00083 00085 virtual void tick() = 0; 00086 00088 virtual void setViewControlChanged( bool enabled ) = 0; 00089 00091 virtual void observerUpdated(const std::string& observerName, 00092 double x, double y, double z, 00093 double psi, double theta, double phi) = 0; 00094 00097 virtual void observerUpdated(const std::string& observerName, 00098 double x, double y, double z, 00099 double psi, double theta, double phi, 00100 double dx, double dy, double dz, 00101 double dpsi, double dtheta, double dphi) = 0; 00102 00104 virtual void stopPublishingObserver(const std::string& observerName) = 0; 00105 00107 virtual void startPublishingObserver(const std::string& observerName) = 0; 00108 00110 virtual void attachObserverObject(const std::string& observerName, DtUniqueID id) = 0; 00111 00113 virtual void detachObjects(const std::string& observerName) = 0; 00114 00116 boost::signal<void (DtMouseState&, const DtUniqueID&, 00117 const std::string& displayEngineName, const std::string& windowName, 00118 const std::string& channelName)> 00119 signal_entityIndicatorMouseDown; 00120 boost::signal<void (DtMouseState&, const DtUniqueID&, 00121 const std::string& displayEngineName, const std::string& windowName, 00122 const std::string& channelName)> 00123 signal_entityIndicatorMouseUp; 00124 boost::signal<void (DtMouseState&, const DtUniqueID&, 00125 const std::string& displayEngineName, const std::string& windowName, 00126 const std::string& channelName)> 00127 signal_entityIndicatorMouseDblClick; 00128 00130 boost::signal<void (DtMouseState&, const DtUniqueID&, 00131 const std::string& displayEngineName, const std::string& windowName, 00132 const std::string& channelName)> 00133 signal_tacticalGraphicIndicatorMouseDown; 00134 boost::signal<void (DtMouseState&, const DtUniqueID&, 00135 const std::string& displayEngineName, const std::string& windowName, 00136 const std::string& channelName)> 00137 signal_tacticalGraphicIndicatorMouseUp; 00138 boost::signal<void (DtMouseState&, const DtUniqueID&, 00139 const std::string& displayEngineName, const std::string& windowName, 00140 const std::string& channelName)> 00141 signal_tacticalGraphicIndicatorMouseDblClick; 00142 00144 boost::signal<void (DtViewStateProcessor::ObserverAction&)> 00145 signal_viewChanged; 00146 00148 boost::signal<void ()> signal_coordinateSystemChanged; 00149 00151 boost::signal<void ()> signal_connected; 00152 00154 boost::signal<void ()> signal_toBeDisconnected; 00155 00156 00159 void entityIndicatorMouseDown(DtMouseState& mouseState, 00160 const DtUniqueID& id, const std::string& displayEngineName, 00161 const std::string& windowName, const std::string& channelName); 00162 void entityIndicatorMouseUp(DtMouseState& mouseState, 00163 const DtUniqueID& id, const std::string& displayEngineName, 00164 const std::string& windowName, const std::string& channelName); 00165 void entityIndicatorMouseDblClick(DtMouseState& mouseState, 00166 const DtUniqueID& id, const std::string& displayEngineName, 00167 const std::string& windowName, const std::string& channelName); 00168 00171 void tacticalGraphicIndicatorMouseDown(DtMouseState& mouseState, 00172 const DtUniqueID& id, const std::string& displayEngineName, 00173 const std::string& windowName, const std::string& channelName); 00174 void tacticalGraphicIndicatorMouseUp(DtMouseState& mouseState, 00175 const DtUniqueID& id, const std::string& displayEngineName, 00176 const std::string& windowName, const std::string& channelName); 00177 void tacticalGraphicIndicatorMouseDblClick(DtMouseState& mouseState, 00178 const DtUniqueID& id, const std::string& displayEngineName, 00179 const std::string& windowName, const std::string& channelName); 00180 00182 void setAppNumber(int appNumber); 00183 00185 void setSiteId(int siteId); 00186 protected: 00187 00188 typedef boost::unordered_map<std::string,DtEntityAppearanceMapper*> AppearanceMapperMap; 00189 00190 //The local coordinate system the simulation will use. 00191 DtCoordinateSystem* myCoordinateSystem; 00192 00193 DtDisplayUnitsConverter* myCoordinateConverter; 00194 00196 AppearanceMapperMap myAppearanceMapperMap; 00197 00199 DtEntityAppearanceMapperFactory* myMapperFactory; 00200 00201 int myAppNumber; 00202 int mySiteId; 00203 }; 00204 }