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 scriptSetTickWhilePaused(const DtString& scriptId, bool enable);
95  virtual void scriptSetRespondToNewSensorContacts(const DtString& scriptId, bool respond);
96  virtual void scriptTaskComplete(int taskId, bool success);
97  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId);
98  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
99  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
100  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
101  virtual void setCheckpointModeUseCheckpointState(const DtString& scriptId, bool);
102  virtual bool checkpointModeUseCheckpointState(const DtString& scriptId) const;
103 
104  virtual int askUserQuestion(const DtString& scriptId,
105  const DtTranslatableStream& title, const DtTranslatableStream& message,
106  const std::vector<DtTranslatableStream>& options, int displayFlag);
107  virtual int statusOfUserQuestion(int questionId);
108  virtual void cancelUserQuestion(int questionId);
109 
112  virtual int scriptSendTask(DtSimTask& task, const DtString& entityName, int parentTaskId,
113  bool actAsSubtask = true);
114 
115  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
116 
117  virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName);
118  virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName);
119  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName);
120  virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName);
121  virtual void deleteTaskVisualization(int taskId, const DtString& visName);
123 
126  virtual void addAdditionalReactiveTask(const DtSimTaskMessageType&);
127 
133 
134  static void newSensorContactCallback(DtVrfObject* object, void* usr);
135  virtual void processNewSensorContact(DtVrfObject* object);
137 
138  static DtSimComponent* creator(const DtString& name,
139  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
140  DtReaderWriterRegistry* parentRegistry);
141 
144  virtual int nextBackgroundProcessId() const;
145 
146 protected:
149 
150  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
151  virtual void processScenarioSaveCallback();
152 
153  virtual void propagateScriptIdChange(const DtString& oldId, const DtString& newId);
154  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData);
155  virtual void processMetaDataChange(const DtScriptedTaskManagerCallbackInfo& info);
156  virtual void restartScriptInterfaceByType(const DtSimTaskMessageType& taskType);
157 
159  virtual void clearAndRestoreTasks();
160 
161  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
162  virtual void processUserQuestionOperation(DtSimMessage*);
163 
164  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
165 
167  virtual bool backgroundProcessAvailable() const;
168 
169 protected:
170  std::map<DtSimTaskMessageType, int> myAvailableScripts;
171  std::map<DtSimTaskMessageType, int> myBackgroundProcesses;
172 
174  std::map<int, boost::shared_ptr<DtScriptInterface> > myCurrentTaskMap;
175  std::list<int> myMarkedForDeletionList;
178  std::list<DtString> myRespondToNewSensorContactList;
183  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
184  DtForceType myCurrentForceType;
185 
187 
191  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
192 
193  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
194 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)