VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptMultiTaskController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
8 
9 #include <map>
16 #include "vrfmsgs/simMessage.h"
19 
20 class DtSimMessage;
21 class DtScriptedTaskSet;
22 
24 {
25 public:
27  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
28  DtReaderWriterRegistry* parentRegistry);
29 
30  virtual ~DtScriptMultiTaskController();
31 
32  virtual const char* type() const;
33 
34  virtual bool init();
35 
36  virtual void preFirstTickInit();
37 
38  virtual void tick();
39 
41  virtual bool tickWhileDestroyed() const;
42 
43  virtual bool beginProcessingTask(const DtTaskMessage& task, DtSimTaskStatePtr taskState);
44 
45  virtual void clearTask(int taskId);
46 
47  virtual void taskComplete(int taskId, bool success);
48  virtual void setComplete(DtSetMessageType setId);
49 
50  virtual void suspendTask(int taskId);
51 
53  virtual DtSimTaskStatePtr currentTaskState(int taskId) const;
54 
55  virtual bool createPSR();
56 
57  virtual void registerScriptTaskCallbacks();
58  virtual void unregisterScriptTaskCallbacks();
59 
60  virtual void registerTaskMsgCallbacks();
61  virtual void unregisterTaskMsgCallbacks();
62 
63  virtual void registerScriptSetCallbacks();
64  virtual void unregisterScriptSetCallbacks();
65 
72  virtual bool isTypeTaskable(const DtSimTaskMessageType& taskType, bool remap = true) const;
73  virtual void addTypeTaskable(const DtSimTaskMessageType& taskType, const DtString& system = "");
74  virtual void removeTypeTaskable(const DtSimTaskMessageType& taskType);
75 
78  virtual bool isTypeSetable(const DtSetMessageType& taskType, bool remap = true) const;
79  virtual void addTypeSetable(const DtSetMessageType& taskType, const DtString& system = "");
80  virtual void removeTypeSetable(const DtSetMessageType& taskType);
81 
86  virtual void addRunnableTaskType(const DtSimTaskMessageType& taskType, const DtString& system);
87  virtual void removeRunnableTaskType(const DtSimTaskMessageType& taskType);
88 
93  virtual void addRunnableSetType(const DtSetMessageType& taskType, const DtString& system);
94  virtual void removeRunnableSetType(const DtSetMessageType& taskType);
95 
100  virtual void sweepMarkedForDeletion(bool clearFromPsr = true);
101 
105  virtual void setScriptTickPeriod(const DtString& scriptId, double period);
106 
107  static void scriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info, void* usr);
108  static void scenarioSaveCallback(void* usr);
109 
111  virtual void scriptSetTickPeriod(const DtString& scriptId, double period);
112  virtual void scriptSetTickWhilePaused(const DtString& scriptId, bool enable);
113  virtual void scriptSetRespondToNewSensorContacts(const DtString& scriptId, bool respond);
114  virtual void scriptTaskComplete(int taskId, bool success);
115  virtual void scriptSetComplete(const DtString& scriptId);
116  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId);
117  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
118  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
119  virtual void cleanupInactiveSubtaskStatus(int parentTaskId);
120  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
121  virtual void setCheckpointModeUseCheckpointState(const DtString& scriptId, bool);
122  virtual bool checkpointModeUseCheckpointState(const DtString& scriptId) const;
123 
124  virtual int askUserQuestion(const DtString& scriptId,
125  const DtTranslatableStream& title, const DtTranslatableStream& message,
126  const std::vector<DtTranslatableStream>& options, int displayFlag);
127  virtual int statusOfUserQuestion(int questionId);
128  virtual void cancelUserQuestion(int questionId);
129 
132  virtual int scriptSendTask(DtSimTask& task, const DtUUID& entityName, int parentTaskId,
133  bool actAsSubtask = true, bool useRadio = false);
134 
135  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
136 
137  virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName);
138  virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName);
139  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName);
140  virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName);
141  virtual void deleteTaskVisualization(int taskId, const DtString& visName);
143 
146  virtual void addAdditionalReactiveTask(const DtSimTaskMessageType&);
147 
153 
154  static void newSensorContactCallback(DtVrfObject* object, void* usr);
155  virtual void processNewSensorContact(DtVrfObject* object);
157 
158  static DtSimComponent* creator(const DtString& name,
159  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
160  DtReaderWriterRegistry* parentRegistry);
161 
164  virtual int nextBackgroundProcessId() const;
165 
166  virtual void startScriptedSet(DtScriptedTaskSet*);
167 
168 protected:
171 
172  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
173  virtual void processScenarioSaveCallback();
174 
175  virtual void propagateScriptIdChange(const DtString& oldId, const DtString& newId);
176  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData);
177  virtual void processMetaDataChange(const DtScriptedTaskManagerCallbackInfo& info);
178  virtual void restartScriptInterfaceByType(const DtSimTaskMessageType& taskType);
179  virtual void restartScriptInterfaceByType(const DtSetMessageType& taskType);
180 
183  virtual void clearAndRestoreTasks(bool forceStop = false);
184 
186  virtual void clearAndRestoreSets();
187 
188  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
189  virtual void processUserQuestionOperation(DtSimMessage*);
190 
191  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
192 
194  virtual bool backgroundProcessAvailable() const;
195 
196  static void processScriptedSetCallback(DtSimMessage *msg, void * usrData);
197  virtual void processScriptedSet(DtSimMessage *msg);
198 
199  virtual bool checkRemoveTaskId(int taskId, bool clearFromPsr = true);
200 
201  virtual bool markedForDeletion(int taskId) const;
202 
203 protected:
204  std::map<DtSimTaskMessageType, int> myAvailableTaskScripts;
205  std::map<DtSetMessageType, int> myAvailableSetScripts;
206  std::map<DtSimTaskMessageType, int> myBackgroundProcesses;
207 
209  std::map<int, boost::shared_ptr<DtScriptInterface> > myCurrentScriptInterfaceMap;
210  std::list<int> myMarkedForDeletionList;
213  std::list<DtString> myRespondToNewSensorContactList;
218  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
219  std::map<DtSetMessageType, DtString> myAdditionalRunnableSetTypes;
220  DtForceType myCurrentForceType;
221 
223 
228  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
229  std::map<DtSetMessageType, DtString> mySetsToBeAdded;
230 
231  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
232 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)