VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptReactiveTaskController.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 
10 #include "vrfmsgs/simMessage.h"
15 #include <set>
21 #include <boost/shared_ptr.hpp>
25 
27 class DtSimMessage;
28 
51 
53 {
54 public:
56  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
57  DtReaderWriterRegistry* parentRegistry);
58 
60 
61  virtual const char* type() const;
62 
63  virtual bool init();
64 
65  virtual void preFirstTickInit();
66 
67  virtual void tick();
68 
69  virtual std::list<DtScriptedTaskTask> reactiveTaskStatus() const;
70 
71  virtual bool isReactiveTaskEnabled(const DtSimTaskMessageType& scriptId) const;
72  virtual void notifySuspend(const DtSimTaskMessageType& scriptId, int taskId);
73  virtual void notifyResume(const DtSimTaskMessageType& scriptId, int taskId);
74  virtual void processReturnScriptInterface(const DtSimTaskMessageType& scriptId, int taskId, boost::shared_ptr<DtScriptInterface> iFace);
75 
76  virtual bool enableReactiveTask(const DtSimTaskMessageType& scriptId, DtRwVariableBindings& params, const DtString& systemName, bool resetIfEnabled = false);
77 
78  static void setReactiveTaskCallback(DtSimMessage* msg, void* usr);
79  static void scriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info, void* usr);
80 
82  virtual void scriptSetTickPeriod(int taskId, const DtString& scriptId, double period);
83  virtual void scriptSetTickWhilePaused(int taskId, const DtString& scriptId, bool enable);
85  virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString& scriptId, bool tick);
86  virtual void scriptTaskComplete(int taskId, bool success);
87  virtual void scriptSetComplete(const DtString&);
88  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId);
89  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
90  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
91  virtual void cleanupInactiveSubtaskStatus(int parentTaskId);
92  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
93  virtual int scriptSendTask(DtSimTask& task, const DtUUID& entityName, int parentTaskId, bool actAsSubtask = true, bool useRadio = false);
94  virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString& scriptId, bool);
95  virtual bool checkpointModeUseCheckpointState(int taskId, const DtString& scriptId) const;
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 
104  virtual void addReactiveTaskType(const DtSimTaskMessageType&, const DtString& system = "");
105 
106  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
107 
109  virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName);
111  virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName);
113  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName);
115  virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName);
117  virtual void deleteTaskVisualization(int taskId, const DtString& visName);
119 
120  virtual bool createPSR();
121 
122  static DtSimComponent* creator(const DtString& name,
123  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
124  DtReaderWriterRegistry* parentRegistry);
125 
126  virtual std::vector<DtSimTaskMessageType> availableReactiveTasks() const;
127  virtual DtString systemFor(const DtSimTaskMessageType& scriptId) const;
128 
129 protected:
133 
134  virtual bool shouldInvokeCheck(DtRwScriptReactiveTaskEntry* entry);
135 
136  virtual DtRwScriptReactiveTaskEntry* createDefaultEntry(const DtString& scriptId, const DtString& system = "");
137  virtual bool createAndInitScriptInterface(DtRwScriptReactiveTaskEntry* entry, DtRwVariableBindings* params, bool loadState = false);
138 
139  virtual void activateReactiveTask(DtRwScriptReactiveTaskEntry* entry);
140  virtual void disableReactiveTask(DtRwScriptReactiveTaskEntry* entry, bool cancelActive);
141 
142  virtual void processSetReactiveTaskCallback(DtSetDataRequest* setMsg);
143  virtual void processSetCancel(DtSetReactiveTaskCancel* setMsg);
144  virtual void processSetDisabled(DtSetReactiveTaskDisabled* setMsg);
145  virtual void processSetEnabled(DtSetReactiveTaskEnabled* setMsg);
146  virtual void processSetPriority(DtSetReactiveTaskPriority* setMsg);
147  virtual void processSetTable(DtSetReactiveTaskTable* setMsg);
148 
149  virtual void setupReactiveTasks();
150 
151  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
152 
153  virtual bool doesScriptIdApply(const DtSimTaskMessageType& scriptId) const;
154  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData) const;
155 
156  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
157  virtual void processUserQuestionOperation(DtSimMessage*);
158 
159  virtual void sendOffOutstandingQuestionFor(const DtSimTaskMessageType& scriptId);
160 
161  virtual void addReactiveTaskEntry(const DtSimTaskMessageType& scriptId, DtRwScriptReactiveTaskEntry* entry, bool deleteOnUpdate = true);
162  virtual void queueReactiveTaskCallback(DtSetDataRequest* setMsg);
163 
164 protected:
166  DtForceType myCurrentForceType;
167 
168  std::map<DtSimTaskMessageType, DtString> myAdditionalReactiveTasks;
169 
170  std::map<DtSimTaskMessageType, bool> mySavedCheckpointMode;
171  std::map<DtSimTaskMessageType, double> mySavedTickPeriodSettings;
172  std::map<DtSimTaskMessageType, bool> mySavedTickWhilePausedSettings;
173 
174  std::vector<DtSetDataRequest*> myQueuedReactiveTaskCallbacks;
175 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
virtual DtSubtaskStatusEntry * scriptSubtaskStatus(int subtaskId, int parentTaskId)=0
std::vector< DtSetDataRequest * > myQueuedReactiveTaskCallbacks
Definition: scriptReactiveTaskController.h:174
virtual void cleanupInactiveSubtaskStatus(int parentTaskId)=0
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
This is a DtReaderWriter subclass which holds the status of a subtask that was issues by another task...
Definition: taskStatusEntry.h:27
virtual DtPointTaskVisualizationPtr pointTaskVisualization(const DtString &name)
Finds an existing or creates a new point task visualization with the given name.
virtual DtLineTaskVisualizationPtr lineTaskVisualization(const DtString &name)
Finds an existing or creates a new line task visualization with the given name.
const DtControllerComponent & operator=(const DtControllerComponent &orig)
assignment operator
virtual void notifyScriptTaskError(const DtString &scriptId, int taskId)=0
virtual void scriptTaskComplete(int taskId, bool success)=0
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskPriority.h:19
DtForceType myCurrentForceType
Definition: scriptReactiveTaskController.h:166
DtScriptReactiveTaskControllerPSR * myProcessState
Definition: scriptReactiveTaskController.h:165
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
virtual const char * type() const =0
This returns a string from compTypes.h, and identifies the type of component.
virtual void scriptClearSubtask(int subtaskId, int parentTaskId)=0
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
Definition: readerWriterRegistry.h:39
virtual void cancelUserQuestion(int questionId)=0
std::map< DtSimTaskMessageType, double > mySavedTickPeriodSettings
Definition: scriptReactiveTaskController.h:171
virtual bool init()
Calls setRadio()
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
ReaderWriter object that maintains a list of reader-writer variable bindings.
Definition: rwVariableBindings.h:27
DtSetDataRequest is an abstract base class from which real setDataRequests can derive.
Definition: setDataRequest.h:40
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
File: simMsg.h.
Definition: simMessage.h:35
virtual std::vector< int > scriptPendingSubstaskIds(int taskId)=0
virtual void tick()
This gives the thread of control to the component.
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
DtBoost::shared_ptr< DtLineTaskVisualization > DtLineTaskVisualizationPtr
Definition: lineTaskVisualization.h:138
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskTable.h:18
std::map< DtSimTaskMessageType, bool > mySavedTickWhilePausedSettings
Definition: scriptReactiveTaskController.h:172
End User Description: DtControllerComponent is the base class for all controllers components...
Definition: controllerComponent.h:29
virtual int scriptSendTask(DtSimTask &task, const DtUUID &entityName, int parentTaskId, bool actAsSubtask=true, bool useRadio=false)=0
std::map< DtSimTaskMessageType, DtString > myAdditionalReactiveTasks
Definition: scriptReactiveTaskController.h:168
DtBoost::shared_ptr< DtPointTaskVisualization > DtPointTaskVisualizationPtr
Definition: pointTaskVisualization.h:75
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskDisabled.h:19
virtual bool checkpointModeUseCheckpointState(int taskId, const DtString &scriptId) const =0
virtual DtAreaTaskVisualizationPtr areaTaskVisualization(const DtString &name)
Finds an existing or creates a new area task visualization with the given name.
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskCancel.h:19
virtual void scriptSetTickWhilePaused(int taskId, const DtString &scriptId, bool enable)=0
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:31
virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString &scriptId, bool tick)=0
Definition: scriptReactiveTaskControllerPSR.h:31
Definition: scriptedTaskManager.h:44
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
virtual void deleteTaskVisualization(int taskId, const DtString &visName)=0
Definition: rwScriptReactiveTaskEntry.h:21
virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString &scriptId, bool)=0
std::map< DtSimTaskMessageType, bool > mySavedCheckpointMode
Definition: scriptReactiveTaskController.h:170
Definition: scriptedTaskMetaData.h:48
Definition: scriptTaskControllerInterface.h:22
virtual int statusOfUserQuestion(int questionId)=0
Definition: setReactiveTaskEnabled.h:17
DtBoost::shared_ptr< DtTextTaskVisualization > DtTextTaskVisualizationPtr
Definition: textTaskVisualization.h:75
virtual int askUserQuestion(const DtString &scriptId, const DtTranslatableStream &title, const DtTranslatableStream &message, const std::vector< DtTranslatableStream > &options, int displayFlag)=0
DtBoost::shared_ptr< DtAreaTaskVisualization > DtAreaTaskVisualizationPtr
Definition: areaTaskVisualization.h:61
READ ME!
Definition: scriptReactiveTaskController.h:52
virtual DtTextTaskVisualizationPtr textTaskVisualization(const DtString &name)
Finds an existing or creates a new text task visualization with the given name.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)