VR-Forces Developer's Guide
 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>
24 
26 class DtSimMessage;
27 class DtLocalObject;
28 
51 
53 {
54 public:
55 
56  static DtSimComponent* creator( const DtString& name, DtLocalObject* owner,
57  DtSimulationServices* simServices, DtComponentDescriptor* desc, DtReaderWriterRegistry* parentRegistry );
58 
60  DtSimulationServices* simServices, DtComponentDescriptor* desc, DtReaderWriterRegistry* parentRegistry );
61 
62  virtual ~DtScriptReactiveTaskController() override;
63 
64  virtual const char* type() const override;
65 
66  virtual bool init() override;
67 
68  virtual void preFirstTickInit() override;
69 
70  virtual void tick() override;
71 
72  virtual std::list<DtScriptedTaskTask> reactiveTaskStatus() const;
73 
74  virtual bool isReactiveTaskEnabled( const DtSimTaskMessageType& scriptId ) const;
75  virtual void notifySuspend( const DtSimTaskMessageType& scriptId, int taskId );
76  virtual void notifyResume( const DtSimTaskMessageType& scriptId, int taskId );
77  virtual void processReturnScriptInterface( const DtSimTaskMessageType& scriptId, int taskId, std::shared_ptr<DtScriptInterface> iFace );
78 
79  virtual bool enableReactiveTask( const DtSimTaskMessageType& scriptId, DtRwVariableBindings& params, const DtString& systemName, bool resetIfEnabled = false );
80 
81  static void setReactiveTaskCallback( DtSimMessage* msg, void* usr );
82  static void scriptUpdatedCallback( const DtScriptedTaskManagerCallbackInfo& info, void* usr );
83 
85  virtual void scriptSetTickPeriod(int taskId, const DtString& scriptId, double period) override;
86  virtual void scriptSetTickWhilePaused(int taskId, const DtString& scriptId, bool enable) override;
88  virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString& scriptId, bool tick) override;
89  virtual void scriptTaskComplete(int taskId, bool success) override;
90  virtual void scriptSetComplete(const DtString&) override;
91  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId) override;
92  virtual std::vector<int> scriptPendingSubstaskIds(int taskId) override;
93  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId) override;
94  virtual void cleanupInactiveSubtaskStatus(int parentTaskId) override;
95  virtual void scriptClearSubtask(int subtaskId, int parentTaskId) override;
96  virtual int scriptSendTask(DtSimTask& task, const DtUUID& entityName, int parentTaskId, bool actAsSubtask = true,
97  bool useRadio = false) override;
98  virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString& scriptId, bool) override;
99  virtual bool checkpointModeUseCheckpointState(int taskId, const DtString& scriptId) const override;
100 
101  virtual int askUserQuestion(const DtString& scriptId, const DtTranslatableStream& title,
102  const DtTranslatableStream& message, const std::vector<DtTranslatableStream>& options, int displayFlag) override;
103  virtual int statusOfUserQuestion(int questionId) override;
104  virtual void cancelUserQuestion(int questionId) override;
105 
107  virtual void addReactiveTaskType( const DtSimTaskMessageType&, const DtString& system = "" );
108 
109  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId) override;
110 
112  virtual makVrf::DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName) override;
114  virtual makVrf::DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName) override;
116  virtual makVrf::DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName) override;
118  virtual makVrf::DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName) override;
120  virtual void deleteTaskVisualization(int taskId, const DtString& visName) override;
122 
123  virtual bool createPSR();
124 
125  virtual std::set<DtSimTaskMessageType> availableReactiveTasks() const;
126  virtual DtString systemFor( const DtSimTaskMessageType& scriptId ) const;
127 
128 protected:
129 
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 
169 
170  virtual void processNewSensorContact();
172 
173 protected:
174 
176  DtForceType myCurrentForceType;
177 
178  std::map<DtSimTaskMessageType,DtString> myAdditionalReactiveTasks;
179 
180  std::map<DtSimTaskMessageType,bool> mySavedCheckpointMode;
181  std::map<DtSimTaskMessageType,double> mySavedTickPeriodSettings;
182  std::map<DtSimTaskMessageType,bool> mySavedTickWhilePausedSettings;
183 
184  std::vector<DtSetDataRequest*> myQueuedReactiveTaskCallbacks;
185 
186  typedef std::pair<int, DtSimTaskMessageType> TaskAndScriptIds;
188  std::list<TaskAndScriptIds> myRespondToNewSensorContactList;
189  bool mySetupReactiveTasks = false;
190 };
virtual makVrf::DtAreaTaskVisualizationPtr areaTaskVisualization(const DtString &name)
Finds an existing or creates a new area task visualization with the given name.
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual DtSubtaskStatusEntry * scriptSubtaskStatus(int subtaskId, int parentTaskId)=0
std::vector< DtSetDataRequest * > myQueuedReactiveTaskCallbacks
Definition: scriptReactiveTaskController.h:184
virtual void cleanupInactiveSubtaskStatus(int parentTaskId)=0
std::map< DtSimTaskMessageType, bool > mySavedCheckpointMode
Definition: scriptReactiveTaskController.h:180
This is a DtReaderWriter subclass which holds the status of a subtask that was issues by another task...
Definition: taskStatusEntry.h:28
const DtControllerComponent & operator=(const DtControllerComponent &orig)
assignment operator
std::map< DtSimTaskMessageType, bool > mySavedTickWhilePausedSettings
Definition: scriptReactiveTaskController.h:182
virtual void notifyScriptTaskError(const DtString &scriptId, int taskId)=0
std::map< DtSimTaskMessageType, double > mySavedTickPeriodSettings
Definition: scriptReactiveTaskController.h:181
virtual void scriptTaskComplete(int taskId, bool success)=0
std::pair< int, DtSimTaskMessageType > TaskAndScriptIds
Definition: scriptReactiveTaskController.h:186
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskPriority.h:19
DtForceType myCurrentForceType
Definition: scriptReactiveTaskController.h:176
DtScriptReactiveTaskControllerPSR * myProcessState
Definition: scriptReactiveTaskController.h:175
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
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
std::map< DtSimTaskMessageType, DtString > myAdditionalReactiveTasks
Definition: scriptReactiveTaskController.h:178
virtual const char * type() const override=0
This returns a string from compTypes.h, and identifies the type of component.
Definition: readerWriterRegistry.h:39
virtual void cancelUserQuestion(int questionId)=0
virtual makVrf::DtTextTaskVisualizationPtr textTaskVisualization(const DtString &name)
Finds an existing or creates a new text task visualization with the given name.
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. It keeps a list of name...
Definition: rwVariableBindings.h:27
virtual bool init() override
Calls setRadio()
virtual makVrf::DtPointTaskVisualizationPtr pointTaskVisualization(const DtString &name)
Finds an existing or creates a new point task visualization with the given name.
DtSetDataRequest is an abstract base class from which real setDataRequests can derive. It manages the read/write capability; derived classes need only use and register read/writatble data types for derived information.
Definition: setDataRequest.h:41
#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. The component is ticked once each simulation from ...
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
virtual makVrf::DtLineTaskVisualizationPtr lineTaskVisualization(const DtString &name)
Finds an existing or creates a new line task visualization with the given name.
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskTable.h:18
std::list< TaskAndScriptIds > myRespondToNewSensorContactList
List of task and script IDs for scripts that will respond to new sensor contacts. ...
Definition: scriptReactiveTaskController.h:188
End User Description: DtControllerComponent is the base class for all controllers components...
Definition: controllerComponent.h:31
virtual int scriptSendTask(DtSimTask &task, const DtUUID &entityName, int parentTaskId, bool actAsSubtask=true, bool useRadio=false)=0
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
Used to set the entity emitter system radar mode.
Definition: setReactiveTaskDisabled.h:19
virtual bool checkpointModeUseCheckpointState(int taskId, const DtString &scriptId) const =0
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. It manages the read/write capab...
Definition: simTask.h:30
virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString &scriptId, bool tick)=0
Definition: scriptReactiveTaskControllerPSR.h:29
Definition: scriptedTaskManager.h:45
virtual void deleteTaskVisualization(int taskId, const DtString &visName)=0
Definition: rwScriptReactiveTaskEntry.h:20
virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString &scriptId, bool)=0
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
Definition: scriptTaskControllerInterface.h:19
virtual int statusOfUserQuestion(int questionId)=0
Definition: setReactiveTaskEnabled.h:17
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
READ ME!
Definition: scriptReactiveTaskController.h:52

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)