VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 DtString& scriptId) const;
72  virtual void notifySuspend(const DtString& scriptId, int taskId);
73  virtual void notifyResume(const DtString& scriptId, int taskId);
74  virtual void processReturnScriptInterface(const DtString& scriptId, int taskId, boost::shared_ptr<DtScriptInterface> iFace);
75 
76  virtual bool enableReactiveTask(const DtString& 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(const DtString& scriptId, double period);
83  virtual void scriptSetTickWhilePaused(const DtString& scriptId, bool enable);
85  virtual void scriptSetRespondToNewSensorContacts(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);
94  virtual void setCheckpointModeUseCheckpointState(const DtString& scriptId, bool);
95  virtual bool checkpointModeUseCheckpointState(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 DtString&, 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<std::string> availableReactiveTasks() const;
127  virtual DtString systemFor(const DtString& 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 DtString& 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 DtString& scriptId);
160 
161  virtual void addReactiveTaskEntry(const DtString& scriptId, DtRwScriptReactiveTaskEntry* entry, bool deleteOnUpdate = true);
162 
163 protected:
165  DtForceType myCurrentForceType;
166 
167  std::map<DtString, DtString> myAdditionalReactiveTasks;
168 
169  std::map<DtString, bool> mySavedCheckpointMode;
170  std::map<DtString, double> mySavedTickPeriodSettings;
171  std::map<DtString, bool> mySavedTickWhilePausedSettings;
172 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)