![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2009 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: DtCigiConnection.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 *********************************************************************/ 00008 00012 00013 #ifndef DtCigiConnection_H_ 00014 #define DtCigiConnection_H_ 00015 00016 #include <vrvCigi/vrvCigi.h> 00017 00018 #include <vrvCigi/DtCigiConnSettingsHandler.h> 00019 #include <vrvCigi/DtCigiConnectionInitializer.h> 00020 #include <vrvCigi/DtCigiViewController.h> 00021 #include <vrvCigi/DtComponentSignaler.h> 00022 00023 #include <vrvCore/DtBaseConnection.h> 00024 #include <vrvCore/DtViewStateProcessor.h> 00025 00026 #include <vrvUtil/DtSignalConnectionManager.h> 00027 00028 #include <makArchives/DtCigiSettingsRecord.h> 00029 00030 #include <matrix/vlVector.h> 00031 00032 #include <boost/signal.hpp> 00033 00034 class CigiViewCtrlV3; 00035 00036 namespace makVrv 00037 { 00038 class DtCigiConnectionInitializer; 00039 class DtCigiNetworkIO; 00040 class DtAgentManagerInterface; 00041 class DtCigiEntityVisualizer; 00042 class DtCoordinateSystem; 00043 class DtSharedSettingsManager; 00044 class DtVirtualBaseClass; 00045 class DtCigiIgControlProcessor; 00046 class DtHatHotResponder; 00047 class DtLosResponder; 00048 00054 class DT_DLL_VRVCIGI DtCigiConnection : public DtBaseConnection 00055 { 00056 public: 00057 enum DtIgMode 00058 { 00059 ResetStandby = 0, 00060 Operate = 1, 00061 Debug = 2 00062 }; 00063 00065 DtCigiConnection(const DtCigiConnectionInitializer& init, 00066 DtAgentManagerInterface& sceneInterface, 00067 DtSharedSettingsManager& settingsManager); 00068 00070 virtual ~DtCigiConnection(); 00071 00073 virtual bool tick(); 00074 00076 virtual bool connect(); 00077 00079 virtual bool disconnect(); 00080 00082 virtual void setConnectionInitializer(const DtCigiConnectionInitializer& init); 00083 00085 virtual int cigiMinorVersion() const; 00086 00088 virtual void sendCigiMessages(); 00089 00091 virtual void setCoordinateSystem(const std::string& name, 00092 const std::string& params); 00093 00095 virtual DtCoordinateSystem& coordinateSystem(); 00096 00098 virtual const DtCigiEntityVisualizer& entityManager() const; 00099 00101 virtual const makArchives::DtCigiSettingsRecord& cigiSettings() const; 00102 00104 virtual void setLastHostFrameNumber(unsigned int frameNumber); 00105 00107 virtual unsigned int lastHostFrameNumber() const; 00108 00114 virtual DtVirtualBaseClass* findInstance(const std::string& instanceName); 00115 00128 inline bool destroyingInstances() const 00129 { 00130 return myDestroyingInstancesFlag; 00131 } 00132 00135 virtual void registerInstance(const std::string& instanceName, 00136 DtVirtualBaseClass* instance); 00137 00139 virtual void setIgMode(DtIgMode mode); 00140 00142 virtual DtIgMode igMode() const; 00143 00145 virtual void setDatabaseNumber(int number); 00146 00148 virtual int databaseNumber() const; 00149 00152 virtual void setLoadingDatabase(); 00153 00156 virtual void setDatabaseLoaded(); 00157 00159 virtual void setExtrapolationEnabled(bool enabled); 00160 00162 virtual bool extrapolationEnabled() const; 00163 00165 virtual void setTimestampValid(bool valid); 00166 00168 virtual bool timestampValid() const; 00169 00171 virtual void setLastTimestamp(unsigned int timestamp); 00172 00174 virtual unsigned int lastTimestamp() const; 00175 00177 virtual void sendHatHotResponse(double height, unsigned int hotId, bool hat, 00178 unsigned int lastFrame, bool valid); 00179 00181 virtual void sendLosResponse(int losId, int entityId, bool visible, double range, 00182 int responseCount, int hostFrame); 00183 00185 virtual DtHatHotResponder& hatHotResponder(); 00186 00188 virtual DtLosResponder& losResponder(); 00189 00191 virtual unsigned int currentIgFrame() const; 00192 00194 virtual DtComponentSignaler& componentSignaler(); 00195 00197 boost::signal<void (DtViewStateProcessor::ObserverAction&)> 00198 signal_viewChanged; 00199 00201 boost::signal<void (int, DtUniqueID)> signal_alphaChanged; 00202 00204 boost::signal<void (int, DtCigiViewController::DtViewDefinitionAction) > 00205 signal_receivedViewDefinition; 00206 00208 boost::signal<void (int, DtCigiViewController::DtViewControlAction)> 00209 signal_receivedViewControl; 00210 00212 boost::signal<void (int, int, int, int, int, bool)> signal_timeSet; 00213 00215 boost::signal<void (const std::string&)> signal_loadDatabase; 00216 00218 boost::signal<void ()> signal_connected; 00219 00221 boost::signal<void ()> signal_toBeDisconnected; 00222 00223 00224 protected: 00226 void on_viewControlReceived(const CigiViewCtrlV3& viewControl); 00227 00228 protected: 00229 typedef std::map<std::string,DtVirtualBaseClass*> InstanceMap; 00230 00231 DtCigiNetworkIO* myNetworkIO; 00232 DtCigiEntityVisualizer* myEntityManager; 00233 DtCigiConnectionInitializer myInitializer; 00234 DtCigiIgControlProcessor* myIgController; 00235 DtHatHotResponder* myHatHotResponder; 00236 DtLosResponder* myLosResponder; 00237 DtCoordinateSystem* myCoordinateSystem; 00238 DtComponentSignaler myComponentSignaler; 00239 DtCigiConnSettingsHandler mySettingsHandler; 00240 bool myUseSynchronousMode; 00241 unsigned int myIgFrame; 00242 unsigned int myLastHostFrameNumber; 00243 DtSignalConnectionManager mySignals; 00244 DtIgMode myMode; 00245 int myDatabaseNumber; 00246 bool myDatabaseLoading; 00247 bool myExtrapolationEnabled; 00248 bool myTimestampValid; 00249 unsigned int myLastTimestamp; 00250 00251 //Stores a pointer to simulation specific instances. 00252 InstanceMap myInstances; 00253 bool myDestroyingInstancesFlag; 00254 int myCigiMinorVersion; 00255 }; 00256 } 00257 00258 #endif