VR-Forces Development_Version 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 
23 {
24 public:
26  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
27  DtReaderWriterRegistry* parentRegistry);
28 
29  virtual ~DtScriptMultiTaskController();
30 
31  virtual const char* type() const;
32 
33  virtual bool init();
34 
35  virtual void preFirstTickInit();
36 
37  virtual void tick();
38 
40  virtual bool tickWhileDestroyed() const;
41 
42  virtual bool beginProcessingTask(const DtTaskMessage& task, DtSimTaskStatePtr taskState);
43 
44  virtual void clearTask(int taskId);
45 
46  virtual void taskComplete(int taskId, bool success);
47 
48  virtual void suspendTask(int taskId);
49 
51  virtual DtSimTaskStatePtr currentTaskState(int taskId) const;
52 
53  virtual bool createPSR();
54 
55  virtual void registerScriptTaskCallbacks();
56  virtual void unregisterScriptTaskCallbacks();
57 
58  virtual void registerTaskMsgCallbacks();
59  virtual void unregisterTaskMsgCallbacks();
60 
67  virtual bool isTypeTaskable(const DtSimTaskMessageType& taskType) const;
68  virtual void addTypeTaskable(const DtSimTaskMessageType& taskType, const DtString& system = "");
69  virtual void removeTypeTaskable(const DtSimTaskMessageType& taskType);
70 
75  virtual void addRunnableTaskType(const DtSimTaskMessageType& taskType, const DtString& system);
76  virtual void removeRunnableTaskType(const DtSimTaskMessageType& taskType);
77 
82  virtual void sweepMarkedForDeletion(bool clearFromPsr = true);
83 
87  virtual void setScriptTickPeriod(const DtString& scriptId, double period);
88 
89  static void scriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info, void* usr);
90  static void scenarioSaveCallback(void* usr);
91 
93  virtual void scriptSetTickPeriod(const DtString& scriptId, double period);
94  virtual void scriptSetRespondToNewSensorContacts(const DtString& scriptId, bool respond);
95  virtual void scriptTaskComplete(int taskId, bool success);
96  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId);
97  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
98  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
99  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
100 
101  virtual int askUserQuestion(const DtString& scriptId,
102  const DtTranslatableStream& title, const DtTranslatableStream& message,
103  const std::vector<DtTranslatableStream>& options, int displayFlag);
104  virtual int statusOfUserQuestion(int questionId);
105  virtual void cancelUserQuestion(int questionId);
106 
109  virtual int scriptSendTask(DtSimTask& task, const DtString& entityName, int parentTaskId,
110  bool actAsSubtask = true);
111 
112  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
113 
114  virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName);
115  virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName);
116  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName);
117  virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName);
118  virtual void deleteTaskVisualization(int taskId, const DtString& visName);
120 
123  virtual void addAdditionalReactiveTask(const DtSimTaskMessageType&);
124 
130 
131  static void newSensorContactCallback(DtVrfObject* object, void* usr);
132  virtual void processNewSensorContact(DtVrfObject* object);
134 
135  static DtSimComponent* creator(const DtString& name,
136  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
137  DtReaderWriterRegistry* parentRegistry);
138 
141  virtual int nextBackgroundProcessId() const;
142 
143 protected:
146 
147  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
148  virtual void processScenarioSaveCallback();
149 
150  virtual void propagateScriptIdChange(const DtString& oldId, const DtString& newId);
151  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData);
152  virtual void processMetaDataChange(const DtScriptedTaskManagerCallbackInfo& info);
153  virtual void restartScriptInterfaceByType(const DtSimTaskMessageType& taskType);
154 
156  virtual void clearAndRestoreTasks();
157 
158  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
159  virtual void processUserQuestionOperation(DtSimMessage*);
160 
161  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
162 
164  virtual bool backgroundProcessAvailable() const;
165 
166 protected:
167  std::map<DtSimTaskMessageType, int> myAvailableScripts;
168  std::map<DtSimTaskMessageType, int> myBackgroundProcesses;
169 
171  std::map<int, boost::shared_ptr<DtScriptInterface> > myCurrentTaskMap;
172  std::list<int> myMarkedForDeletionList;
175  std::list<DtString> myRespondToNewSensorContactList;
180  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
181  DtForceType myCurrentForceType;
182 
184 
188  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
189 
190  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
191 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)