VR-Forces 4.3.1 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 DtString 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 
63  virtual bool isTypeTaskable(const DtSimTaskMessageType& taskType) const;
64  virtual void addTypeTaskable(const DtSimTaskMessageType& taskType, const DtString& system = "");
65  virtual void removeTypeTaskable(const DtSimTaskMessageType& taskType);
66 
71  virtual void addRunnableTaskType(const DtSimTaskMessageType& taskType, const DtString& system);
72  virtual void removeRunnableTaskType(const DtSimTaskMessageType& taskType);
73 
78  virtual void sweepMarkedForDeletion(bool clearFromPsr = true);
79 
83  virtual void setScriptTickPeriod(const DtString& scriptId, double period);
84 
85  static void scriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info, void* usr);
86  static void scenarioSaveCallback(void* usr);
87 
89  virtual void scriptSetTickPeriod(const DtString& scriptId, double period);
90  virtual void scriptSetRespondToNewSensorContacts(const DtString& scriptId, bool respond);
91  virtual void scriptTaskComplete(int taskId, bool success);
92  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId);
93  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
94  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
95  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
96 
97  virtual int askUserQuestion(const DtString& scriptId,
98  const DtTranslatableStream& title, const DtTranslatableStream& message,
99  const std::vector<DtTranslatableStream>& options, int displayFlag);
100  virtual int statusOfUserQuestion(int questionId);
101  virtual void cancelUserQuestion(int questionId);
102 
105  virtual int scriptSendTask(DtSimTask& task, const DtString& entityName, int parentTaskId,
106  bool actAsSubtask = true);
107 
108  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
110 
113  virtual void addAdditionalReactiveTask(const DtSimTaskMessageType&);
114 
120 
121  static void newSensorContactCallback(DtVrfObject* object, void* usr);
122  virtual void processNewSensorContact(DtVrfObject* object);
124 
125  static DtSimComponent* creator(const DtString& name,
126  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
127  DtReaderWriterRegistry* parentRegistry);
128 
131  virtual int nextBackgroundProcessId() const;
132 
133 protected:
136 
137  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
138  virtual void processScenarioSaveCallback();
139 
140  virtual void propagateScriptIdChange(const DtString& oldId, const DtString& newId);
141  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData);
142  virtual void processMetaDataChange(const DtScriptedTaskManagerCallbackInfo& info);
143  virtual void restartScriptInterfaceByType(const DtSimTaskMessageType& taskType);
144 
146  virtual void clearAndRestoreTasks();
147 
148  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
149  virtual void processUserQuestionOperation(DtSimMessage*);
150 
151  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
152 
153 protected:
154  std::map<DtSimTaskMessageType, int> myAvailableScripts;
155  std::map<DtSimTaskMessageType, int> myBackgroundProcesses;
156 
158  std::map<int, boost::shared_ptr<DtScriptInterface> > myCurrentTaskMap;
159  std::list<int> myMarkedForDeletionList;
162  std::list<DtString> myRespondToNewSensorContactList;
167  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
168  DtForceType myCurrentForceType;
169 
171 
175  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
176 
177  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
178 };

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)