![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrfSimMessager.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #pragma once 00015 00016 #include <vrfGuiCore/vrfGuiCore.h> 00017 #include <vrfGuiCore/DtQueuedManager.h> 00018 #include <vrfGuiCore/DtVrfObjectModification.h> 00019 #include <vrfGuiCore/DtEnvironmentalCreationData.h> 00020 #include <vrfGuiCore/DtEntityCreationData.h> 00021 00022 #include <vrvUtil/DtVirtualBaseClass.h> 00023 #include <vrvCore/DtSelectionManager.h> 00024 #include <vrvCore/DtEntityState.h> 00025 #include <vrvUtil/signalslib.h> 00026 #include <vrvCore/DtDe.h> 00027 00028 #include <vlpi/entityType.h> 00029 #include <matrix/vlVector.h> 00030 00031 #include <vrfmsgs/msgExec.h> 00032 #include <vrfmsgs/vrfObjectMessageExecutive.h> 00033 #include <vrfplan/plan.h> 00034 #include <vrfutil/scenario.h> 00035 #include <vrftasks/setReqFact.h> 00036 #include <vrftasks/taskFactory.h> 00037 #include <vrfutil/ceFactory.h> 00038 #include <vrfplan/simCommandFactory.h> 00039 #include <vrftasks/adminContentFactory.h> 00040 #include <vrfExtProtocol/ifContFactory.h> 00041 #include <vrfmsgs/vrfObjectMessageFactory.h> 00042 #include <vrftasks/reportFactory.h> 00043 00044 class DtScenarioLoadInformation; 00045 class DtSetDataRequest; 00046 class DtSimTask; 00047 class DtAdminMessage; 00048 class DtSimInterfaceContent; 00049 00050 typedef void (*DtVrfObjectConsoleMessageCallbackFcn) 00051 (const DtEntityIdentifier& id, int notifyLevel, const DtString& message, void* usr); 00052 00053 namespace makVrf 00054 { 00056 class DT_DLL_VRFGUICORE DtVrfSimMessager : public DtQueuedManager 00057 { 00058 public: 00059 00060 DtVrfSimMessager(makVrv::DtDe&); 00061 virtual ~DtVrfSimMessager(); 00062 00064 static DtVrfSimMessager& instance(makVrv::DtDe& de); 00065 00066 public: 00068 boost::signal<void ()> signal_scenarioModified; 00069 00071 virtual void newScenario(const DtScenario*); 00072 boost::signal<void (const DtScenario*)> signal_newScenario; 00073 00075 virtual void loadScenario(const DtScenarioLoadInformation&); 00076 boost::signal<void (const DtScenarioLoadInformation&)> signal_loadScenario; 00077 00079 virtual void createEntity(DtSimulationAddress addr, DtEntityCreationData); 00080 boost::signal<void (DtSimulationAddress, DtEntityCreationData)> signal_createEntity; 00081 00083 virtual void setTimeoutInterval(int); 00084 boost::signal<void (int)> signal_setTimeoutInterval; 00085 00087 virtual void createEnvironmentalObject(DtSimulationAddress addr, DtEntityType, int force, const std::vector<DtVector>&, 00088 const DtEnvironmentalCreationData& data = DtEnvironmentalCreationData()); 00089 boost::signal<void (DtSimulationAddress, DtEntityType, int, std::vector<DtVector>, 00090 DtEnvironmentalCreationData data)> signal_createEnvironmentalObject; 00091 00093 virtual void closeScenario(); 00094 boost::signal<void ()> signal_closeScenario; 00095 00097 virtual void requestTasksAndSetsFor(std::vector<DtString> name); 00098 boost::signal<void (std::vector<DtString>)> signal_requestTasksAndSetsFor; 00099 00101 virtual void requestDIGuyAppearancesAndAnimations(std::vector<DtString> name); 00102 boost::signal<void (std::vector<DtString>)> signal_requestDIGuyAppearancesAndAnimations; 00103 00106 virtual void sendSetRequest(const DtSetDataRequest& s, const std::vector<std::string>& names); 00107 virtual void sendSetRequest(const DtSetDataRequest& s, const std::string& name); 00108 boost::signal<void (const DtSetDataRequest&, const std::vector<std::string>&)> signal_sendSetRequest; 00109 00112 virtual void sendTaskRequest(const DtSimTask& s, const std::vector<std::string>& names); 00113 virtual void sendTaskRequest(const DtSimTask& s, const std::string& name); 00114 boost::signal<void (const DtSimTask&, const std::vector<std::string>&)> signal_sendTaskRequest; 00115 00117 virtual void subscribePlan(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00118 boost::signal<void (std::string, DtSimulationAddress)> signal_subscribePlan; 00119 00121 virtual void requestPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00122 boost::signal<void (std::string, DtSimulationAddress)> signal_requestPlan; 00123 00125 virtual void requestGlobalPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00126 boost::signal<void (std::string, DtSimulationAddress)> signal_requestGlobalPlan; 00127 00129 virtual void requestMultiplePlans(std::vector<std::string> names, DtSimulationAddress addr = DtSimSendToAll); 00130 boost::signal<void (std::vector<std::string> names, DtSimulationAddress)> signal_requestMultiplePlans; 00131 00133 virtual void assignPlanByName(std::string name, const DtPlan*, DtSimulationAddress addr = DtSimSendToAll); 00134 boost::signal<void (std::string, const DtPlan*, DtSimulationAddress)> signal_assignPlanByName; 00135 00137 virtual void assignGlobalPlanByName(std::string name, const DtPlan*, DtSimulationAddress addr = DtSimSendToAll); 00138 boost::signal<void (std::string, const DtPlan*, DtSimulationAddress)> signal_assignGlobalPlanByName; 00139 00141 virtual void assignMultiplePlanByName(std::vector<std::string> names, const DtPlan*, DtSimulationAddress addr = DtSimSendToAll); 00142 boost::signal<void (std::vector<std::string> names, const DtPlan*, DtSimulationAddress)> signal_assignMultiplePlanByName; 00143 00145 virtual void skipTask(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00146 boost::signal<void (std::string, DtSimulationAddress)> signal_skipTask; 00147 00149 virtual void abandonPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00150 boost::signal<void (std::string, DtSimulationAddress)> signal_abandonPlan; 00151 00153 virtual void aggregateAs(const std::vector<makVrv::DtVrlinkSimulatedEntityState>& names, const DtEntityType& type, 00154 int force, DtAggregateState initialAggregateState, DtSimulationAddress addr); 00155 boost::signal<void (const std::vector<makVrv::DtVrlinkSimulatedEntityState>& names, const DtEntityType& type, int force, 00156 DtAggregateState initialAggregateState, DtSimulationAddress addr)> signal_aggregateAs; 00157 00159 virtual void aggregate(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00160 boost::signal<void (std::string, DtSimulationAddress)> signal_aggregate; 00161 00163 virtual void disaggregate(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00164 boost::signal<void (std::string, DtSimulationAddress)> signal_disaggregate; 00165 00167 virtual void restartPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00168 boost::signal<void (std::string, DtSimulationAddress)> signal_restartPlan; 00169 00171 virtual void setJoystickEnabled(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00172 00174 virtual void setJoystickDisabled(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00175 00177 virtual void requestResourcesFor(std::vector<std::string> names, DtSimulationAddress addr = DtSimSendToAll); 00178 boost::signal<void (std::vector<std::string> names, DtSimulationAddress)> signal_requestResourcesFor; 00179 00181 virtual void runScenario(DtSimulationAddress addr = DtSimSendToAll); 00182 boost::signal<void (DtSimulationAddress)> signal_runScenario; 00183 00185 virtual void pauseScenario(DtSimulationAddress addr = DtSimSendToAll); 00186 boost::signal<void (DtSimulationAddress)> signal_pauseScenario; 00187 00189 virtual void rewindScenario(DtSimulationAddress addr = DtSimSendToAll); 00190 boost::signal<void (DtSimulationAddress)> signal_rewindScenario; 00191 00193 virtual void deleteObject(std::string name, DtSimulationAddress addr = DtSimSendToAll); 00194 boost::signal<void (std::string, DtSimulationAddress)> signal_deleteObject; 00195 00198 boost::signal<void (std::string, bool& shouldDelete)> signal_shouldDeleteObject; 00199 00201 virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0); 00202 boost::signal<void (const DtScenario*, DtPreserveMappingsFcn fcn, void* userData)> signal_saveScenario; 00203 00205 virtual void requestGlobalPlans(DtSimulationAddress addr = DtSimSendToAll); 00206 boost::signal<void (DtSimulationAddress addr)> signal_requestGlobalPlans; 00207 00209 virtual void deleteGlobalPlan(std::string, DtSimulationAddress addr = DtSimSendToAll); 00210 boost::signal<void (std::string, DtSimulationAddress addr)> signal_deleteGlobalPlan; 00211 00213 virtual void sendMessageToObject(const DtVrfObjectMessage&, DtSimulationAddress addr = DtSimSendToAll); 00214 boost::signal<void (const DtVrfObjectMessage&, DtSimulationAddress addr)> signal_sendMessageToObject; 00215 00216 virtual int generateRequestId(); 00217 00218 public: 00220 virtual void registerSimMessageCallbackFor(int, DtMessageCallbackFcn, void*); 00221 00223 virtual void unregisterSimMessageCallbackFor(int, DtMessageCallbackFcn, void*); 00224 00226 virtual void registerRadioMessageCallbackFor(int, DtVrfObjectMessageCallbackFcn, void*); 00227 00229 virtual void unregisterRadioMessageCallbackFor(int, DtVrfObjectMessageCallbackFcn, void*); 00230 00232 boost::signal<void (int, DtMessageCallbackFcn, void*, bool)> signal_registerSimMessageCallbackFor; 00233 00235 boost::signal<void (int, DtVrfObjectMessageCallbackFcn, void*, bool)> signal_registerRadioMessageCallbackFor; 00236 00238 virtual void addSetCreatorFcn(std::string, int, DtSetDataRequestCreatorFcn); 00239 boost::signal<void (std::string, int, DtSetDataRequestCreatorFcn)> signal_addSetCreatorFcn; 00240 00242 virtual void addTaskCreatorFcn(std::string, int, DtSimTaskCreatorFcn); 00243 boost::signal<void (std::string, int, DtSimTaskCreatorFcn)> signal_addTaskCreatorFcn; 00244 00246 virtual void addInterfaceContentCreatorFcn(int t, DtInterfaceContentCreatorFcn); 00247 boost::signal<void (int, DtInterfaceContentCreatorFcn)> signal_addInterfaceContentCreatorFcn; 00248 00250 virtual void addAdminContentCreatorFcn(std::string, int, DtAdminContentCreatorFcn); 00251 boost::signal<void (std::string, int, DtAdminContentCreatorFcn)> signal_addAdminContentCreatorFcn; 00252 00254 virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn); 00255 boost::signal<void (std::string, int, DtCondExprCreatorFcn)> signal_addConditionCreatorFcn; 00256 00258 virtual void addReportCreatorFcn(std::string, int, DtSimReportCreatorFcn); 00259 boost::signal<void (std::string, int, DtSimReportCreatorFcn)> signal_addReportCreatorFcn; 00260 00262 virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn); 00263 boost::signal<void (int, DtVrfObjectMessageCreatorFcn)> signal_addObjectMessageCreatorFcn; 00264 00266 virtual void addSimulationCommandCreatorFcn(std::string, int, DtSimCommandCreatorFcn); 00267 boost::signal<void (std::string, int, DtSimCommandCreatorFcn)> signal_addSimulationCommandCreatorFcn; 00268 00270 virtual void sendMessage(const DtSimInterfaceContent& message, DtSimulationAddress addr = DtSimSendToAll); 00271 virtual void sendMessageAndDeleteContent(DtSimInterfaceContent* message, DtSimulationAddress addr = DtSimSendToAll); 00272 boost::signal<void (const DtSimInterfaceContent&, DtSimulationAddress)> signal_sendMessage; 00273 00275 virtual void addToForceLevelOrganization(const std::string& entityId, DtSimulationAddress addr = DtSimSendToAll); 00276 boost::signal<void (const std::string& entityId, DtSimulationAddress)> signal_addToForceLevelOrganization; 00277 00279 virtual void addToOrganization(const std::string& childId, const std::string& superiorId, 00280 DtSimulationAddress addr = DtSimSendToAll); 00281 boost::signal<void (const std::string& childId, const std::string& superiorId, 00282 DtSimulationAddress)> signal_addToOrganization; 00283 00285 virtual void embarkOn(const std::vector<std::string>& children, const std::string& parentName, 00286 bool useSlot = true, const DtVector& overridePosition = DtVector::zero(), DtSimulationAddress addr = DtSimSendToAll); 00287 boost::signal<void (std::vector<std::string> children, std::string parentName, bool, DtVector, 00288 DtSimulationAddress)> signal_embarkOn; 00289 00291 virtual void disembark(const std::vector<std::string>& children, DtSimulationAddress addr = DtSimSendToAll); 00292 boost::signal<void (std::vector<std::string>, DtSimulationAddress)> signal_disembark; 00293 00295 virtual void disembarkAll(const std::vector<std::string>& parents, DtSimulationAddress addr = DtSimSendToAll); 00296 boost::signal<void (std::vector<std::string>, DtSimulationAddress)> signal_disembarkAll; 00297 00299 virtual void attachTo(const std::vector<std::string>& ids, const std::string& parentName); 00300 00302 virtual void detachAll(const std::vector<std::string>& ids); 00303 00305 void registerForCommentInteractions(DtVrfObjectConsoleMessageCallbackFcn, void*); 00306 void unregisterForCommentInteractions(DtVrfObjectConsoleMessageCallbackFcn, void*); 00307 boost::signal<void (DtVrfObjectConsoleMessageCallbackFcn, void*, bool)> signal_registerCommentInteraction; 00308 00311 virtual void logObjectConsoleToFile(const std::string& name, const std::string& filename); 00312 boost::signal<void (std::string, std::string)> signal_logObjectConsoleToFile; 00313 00315 virtual void setObjectNotifyLevel(const std::string& name, int); 00316 boost::signal<void (std::string, int)> signal_setObjectNotifyLevel; 00317 00319 virtual void sendVrfObjectModifyMsg( 00320 const DtSimulationAddress& addr, 00321 const std::string& entityId, 00322 const std::string* name = 0, 00323 const std::vector<DtVector>& = std::vector<DtVector>(), 00324 int* force = 0, 00325 double* heading = 0, 00326 const std::string* label = 0, 00327 DtAppearance* appearance = 0, 00328 const std::string* overlayParent = 0, 00329 const std::string* userData = 0) const; 00330 boost::signal<void (DtSimulationAddress, std::string, DtVrfObjectModification)> signal_sendVrfObjectModifyMessage; 00331 00335 virtual void sendVrfOverlayObjectModifyMsg( 00336 const DtSimulationAddress& addr, 00337 const std::string& id, 00338 int* color = 0, 00339 const std::string* parentName = 0, 00340 const std::string* attachTo = 0, 00341 const std::string* userData = 0) const; 00342 boost::signal<void (DtSimulationAddress, std::string, DtVrfObjectModification)> signal_sendVrfOverlayObjectModifyMessage; 00343 00345 virtual void subscribeForTaskInformation(const std::string&); 00346 00348 virtual void unsubscribeForTaskInformation(const std::string&); 00349 00351 virtual void requestCurrentTasks(const std::string&); 00352 00354 virtual void setAggregateOnCreate(bool); 00355 bool aggregateOnCreate() const; 00356 00357 public: 00359 virtual void sendLoggerSetFilename(std::string filename); 00360 boost::signal<void (std::string)> signal_sendLoggerSetFilename; 00361 00362 virtual void sendLoggerRecordMessage(); 00363 boost::signal<void ()> signal_sendLoggerRecordMessage; 00364 00365 virtual void sendLoggerStopMessage(); 00366 boost::signal<void ()> signal_sendLoggerStopMessage; 00367 00368 public: 00370 boost::signal<void (const DtScenario*)> signal_loadedScenario; 00371 00372 protected: 00374 virtual void slot_deActivated(makVrv::DtDe* de); 00375 00376 protected: 00377 bool myActivated; 00378 bool myAggregateOnCreate; 00379 }; 00380 }