VR-Forces Developer's Guide
 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  DtLocalObject* owner, DtSimulationServices* simManager, DtComponentDescriptor* desc,
28  DtReaderWriterRegistry* parentRegistry);
29 
30  virtual ~DtScriptMultiTaskController() override;
31 
32  virtual const char* type() const override;
33 
34  virtual bool init() override;
35 
36  virtual void preFirstTickInit() override;
37 
38  virtual void tick() override;
39 
41  virtual bool tickWhileDestroyed() const override;
42 
43  virtual bool beginProcessingTask(const DtTaskMessage& task, DtSimTaskStatePtr taskState) override;
44 
45  virtual void clearTask(int taskId) override;
46 
47  virtual void taskComplete(int taskId, bool success) override;
48  virtual void setComplete(DtSetMessageType setId);
49 
50  virtual void suspendTask(int taskId) override;
51 
53  virtual DtSimTaskStatePtr currentTaskState(int taskId) const override;
54 
55  virtual bool createPSR();
56 
57  virtual void registerScriptTaskCallbacks();
58  virtual void unregisterScriptTaskCallbacks();
59 
60  virtual void registerTaskMsgCallbacks() override;
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(int taskId, const DtString& scriptId, double period);
106 
107  static void scriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info, void* usr);
108  static void scenarioSaveCallback(void* usr);
110  static void generateGraphOutputCallback(const DtVrfObjectMessage * msg, void* usr);
111 
114 
116  virtual void scriptSetTickPeriod(int taskId, const DtString& scriptId, double period) override;
117  virtual void scriptSetTickWhilePaused(int taskId, const DtString& scriptId, bool enable) override;
118  virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString& scriptId, bool respond) override;
119  virtual void scriptTaskComplete(int taskId, bool success) override;
120  virtual void scriptSetComplete(const DtString& scriptId) override;
121  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId) override;
122  virtual std::vector<int> scriptPendingSubstaskIds(int taskId) override;
123  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId) override;
124  virtual void cleanupInactiveSubtaskStatus(int parentTaskId) override;
125  virtual void scriptClearSubtask(int subtaskId, int parentTaskId) override;
126  virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString& scriptId, bool) override;
127  virtual bool checkpointModeUseCheckpointState(int taskId, const DtString& scriptId) const override;
128 
129  virtual int askUserQuestion(const DtString& scriptId, const DtTranslatableStream& title,
130  const DtTranslatableStream& message, const std::vector<DtTranslatableStream>& options, int displayFlag) override;
131  virtual int statusOfUserQuestion(int questionId) override;
132  virtual void cancelUserQuestion(int questionId) override;
133 
136  virtual int scriptSendTask(DtSimTask& task, const DtUUID& entityName, int parentTaskId, bool actAsSubtask = true,
137  bool useRadio = false) override;
138 
139  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId) override;
140 
141  virtual makVrf::DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName) override;
142  virtual makVrf::DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName) override;
143  virtual makVrf::DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName) override;
144  virtual makVrf::DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName) override;
145  virtual void deleteTaskVisualization(int taskId, const DtString& visName) override;
147 
150  virtual void addAdditionalReactiveTask(const DtSimTaskMessageType&);
151 
157 
158  virtual void processNewSensorContact();
160 
161  static DtSimComponent* creator(const DtString& name,
162  DtLocalObject* owner, DtSimulationServices* simManager, DtComponentDescriptor* desc,
163  DtReaderWriterRegistry* parentRegistry);
164 
167  virtual int nextBackgroundProcessId() const;
168 
169  virtual void startScriptedSet(DtScriptedTaskSet*);
170 
171 protected:
174 
175  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
176  virtual void processScenarioSaveCallback();
177  virtual void processGenerateGraphOutputCallback(const DtVrfObjectMessage * msg);
178 
179  virtual void propagateScriptIdChange(const DtString& oldId, const DtString& newId);
180  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData);
181  virtual void processMetaDataChange(const DtScriptedTaskManagerCallbackInfo& info);
182  virtual void restartScriptInterfaceByType(const DtSimTaskMessageType& taskType);
183  virtual void restartScriptInterfaceByType(const DtSetMessageType& taskType);
184 
187  virtual void clearAndRestoreTasks(bool forceStop = false);
188 
190  virtual void clearAndRestoreSets();
191 
192  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
193  virtual void processUserQuestionOperation(DtSimMessage*);
194 
195  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
196 
198  virtual bool backgroundProcessAvailable() const;
199 
200  static void processScriptedSetCallback(DtSimMessage *msg, void * usrData);
201  virtual void processScriptedSet(DtSimMessage *msg);
202 
203  virtual bool checkRemoveTaskId(int taskId, bool clearFromPsr = true);
204 
205  virtual bool markedForDeletion(int taskId) const;
206 
207 protected:
208  std::map<DtSimTaskMessageType, int> myAvailableTaskScripts;
209  std::map<DtSetMessageType, int> myAvailableSetScripts;
210  std::map<DtSimTaskMessageType, int> myBackgroundProcesses;
211 
213  std::map<int, std::shared_ptr<DtScriptInterface> > myCurrentScriptInterfaceMap;
214  std::list<int> myMarkedForDeletionList;
215 
216  typedef std::pair<int, DtString> TaskAndScriptIds;
218  std::list<TaskAndScriptIds> myRespondToNewSensorContactList;
223  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
224  std::map<DtSetMessageType, DtString> myAdditionalRunnableSetTypes;
225  DtForceType myCurrentForceType;
226 
228 
233  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
234  std::map<DtSetMessageType, DtString> mySetsToBeAdded;
235 
236  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
238  std::set<int> myRemovedTasks;
239  boost::signals2::connection myNewSensorContactConnection;
240 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual bool init() override
Calls setRadio()
DtScriptMultiTaskControllerPSR * myProcessState
Definition: scriptMultiTaskController.h:219
virtual DtSubtaskStatusEntry * scriptSubtaskStatus(int subtaskId, int parentTaskId)=0
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
boost::signals2::connection myNewSensorContactConnection
Definition: scriptMultiTaskController.h:239
std::set< DtSimTaskMessageType > myAdditionalReactiveTasks
Definition: scriptMultiTaskController.h:236
This is a DtReaderWriter subclass which holds the status of a subtask that was issues by another task...
Definition: taskStatusEntry.h:28
std::map< DtSimTaskMessageType, DtString > myTasksToBeAdded
Definition: scriptMultiTaskController.h:233
std::set< int > myRemovedTasks
Definition: scriptMultiTaskController.h:238
std::map< DtSetMessageType, int > myAvailableSetScripts
Definition: scriptMultiTaskController.h:209
virtual void notifyScriptTaskError(const DtString &scriptId, int taskId)=0
virtual void scriptTaskComplete(int taskId, bool success)=0
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Set version of scripted task that is used in scripted set scripts.
Definition: scriptedTaskSet.h:19
virtual void clearTask()
Called when you want to clear out this component&#39;s task state. Base class implementation does nothing...
virtual void registerTaskMsgCallbacks()
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
virtual void scriptClearSubtask(int subtaskId, int parentTaskId)=0
virtual void suspendTask(int taskId)
This method is called when the specified running task is being suspended. The default implementation ...
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: multiTaskControllerComponent.h:23
Definition: readerWriterRegistry.h:39
std::shared_ptr< DtSimTaskState > DtSimTaskStatePtr
Definition: taskAndTaskStateDefines.h:18
virtual void cancelUserQuestion(int questionId)=0
bool myAreTaskCallbacksRegistered
Definition: scriptMultiTaskController.h:220
virtual void scriptSetTickPeriod(int taskId, const DtString &scriptId, double period)=0
virtual int scriptSendSubtask(DtSimTask &task, int parentTaskId)=0
virtual void scriptSetComplete(const DtString &scriptId)=0
bool myTasksRegistered
Definition: scriptMultiTaskController.h:237
DtForceType myCurrentForceType
Definition: scriptMultiTaskController.h:225
Definition: scriptMultiTaskController.h:23
std::pair< int, DtString > TaskAndScriptIds
Definition: scriptMultiTaskController.h:216
std::map< DtSimTaskMessageType, int > myBackgroundProcesses
Definition: scriptMultiTaskController.h:210
File: simMsg.h.
Definition: simMessage.h:35
virtual makVrf::DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new line task visualization with the given name.
std::map< int, std::shared_ptr< DtScriptInterface > > myCurrentScriptInterfaceMap
Negative task ids are background processes.
Definition: scriptMultiTaskController.h:213
virtual std::vector< int > scriptPendingSubstaskIds(int taskId)=0
Process State Repository for the DtRotaryWingFlightCommandController component.
Definition: scriptMultiTaskControllerPSR.h:22
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
virtual bool tickWhileDestroyed() const
If the component returns true here, it will be ticked regardless of the destroyed state of the host e...
std::list< int > myMarkedForDeletionList
Definition: scriptMultiTaskController.h:214
std::map< DtSetMessageType, DtString > mySetsToBeAdded
Definition: scriptMultiTaskController.h:234
Define constants for types of tasks, sets, admin messages, reports, and sim commands (all sent via ra...
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
virtual makVrf::DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new point task visualization with the given name.
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
virtual DtSimTaskStatePtr currentTaskState(int taskId) const
virtual int scriptSendTask(DtSimTask &task, const DtUUID &entityName, int parentTaskId, bool actAsSubtask=true, bool useRadio=false)=0
virtual void setScriptTickPeriod(const DtString &scriptId, double period)
If supported, and this is a scripted task controller, set the period to tick the script. Default is no-op.
virtual makVrf::DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new text task visualization with the given name.
bool myIsDestroyed
Definition: scriptMultiTaskController.h:227
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
bool myQueueSetsToBeAdded
Definition: scriptMultiTaskController.h:232
virtual bool checkpointModeUseCheckpointState(int taskId, const DtString &scriptId) const =0
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
virtual void cleanupInactiveSubtaskStatus(int taskId)
Clears out subtask status entries that are either completed or canceled which were started by the spe...
virtual makVrf::DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new area task visualization with the given name.
virtual void scriptSetTickWhilePaused(int taskId, const DtString &scriptId, bool enable)=0
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
std::list< TaskAndScriptIds > myRespondToNewSensorContactList
List of task and script IDs for scripts that will respond to new sensor contacts. ...
Definition: scriptMultiTaskController.h:218
std::map< DtSimTaskMessageType, int > myAvailableTaskScripts
Definition: scriptMultiTaskController.h:208
virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString &scriptId, bool tick)=0
Definition: scriptedTaskManager.h:45
virtual void deleteTaskVisualization(int taskId, const DtString &visName)=0
bool myQueueTasksToBeAdded
Prior to preFirstTickInit, any tasks added should be queued for later addition.
Definition: scriptMultiTaskController.h:231
virtual bool beginProcessingTask(const DtTaskMessage &task, DtSimTaskStatePtr taskState) override
Called by the task manager when this controller should start executing the specified task...
virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString &scriptId, bool)=0
virtual void taskComplete(int taskId, bool success)
This indicates that the specified task is complete. This will kick off a series of events in the task...
1) Define the interface class that will be used to represent the next and current frames...
Definition: taskVisualizationStateComponent.h:260
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:58
std::map< DtSetMessageType, DtString > myAdditionalRunnableSetTypes
Definition: scriptMultiTaskController.h:224
Definition: scriptTaskControllerInterface.h:19
virtual int statusOfUserQuestion(int questionId)=0
A DtTaskMsg is a DtRadioMsg with a pointer to a task. The type of the taskMsg is just the type of the...
Definition: taskMessage.h:21
std::map< DtSimTaskMessageType, DtString > myAdditionalRunnableTaskTypes
This is a list of script IDs that will be run by this component, even if they script is not marked as...
Definition: scriptMultiTaskController.h:223
virtual int askUserQuestion(const DtString &scriptId, const DtTranslatableStream &title, const DtTranslatableStream &message, const std::vector< DtTranslatableStream > &options, int displayFlag)=0
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)