VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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) 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) 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);
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 
182  virtual void clearAndRestoreTasks();
183 
185  virtual void clearAndRestoreSets();
186 
187  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
188  virtual void processUserQuestionOperation(DtSimMessage*);
189 
190  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
191 
193  virtual bool backgroundProcessAvailable() const;
194 
195  static void processScriptedSetCallback(DtSimMessage *msg, void * usrData);
196  virtual void processScriptedSet(DtSimMessage *msg);
197 
198  virtual bool checkRemoveTaskId(int taskId, bool clearFromPsr = true);
199 
200  virtual bool markedForDeletion(int taskId) const;
201 
202 protected:
203  std::map<DtSimTaskMessageType, int> myAvailableTaskScripts;
204  std::map<DtSetMessageType, int> myAvailableSetScripts;
205  std::map<DtString, int> myBackgroundProcesses;
206 
208  std::map<int, boost::shared_ptr<DtScriptInterface> > myCurrentScriptInterfaceMap;
209  std::list<int> myMarkedForDeletionList;
212  std::list<DtString> myRespondToNewSensorContactList;
217  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
218  std::map<DtSetMessageType, DtString> myAdditionalRunnableSetTypes;
219  DtForceType myCurrentForceType;
220 
222 
227  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
228  std::map<DtSetMessageType, DtString> mySetsToBeAdded;
229 
230  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
231 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)