VR-Forces Development_Version 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 int scriptSendSubtask(DtSimTask& task, int parentTaskId);
88  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
89  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
90  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
91  virtual int scriptSendTask(DtSimTask& task, const DtString& entityName, int parentTaskId, bool actAsSubtask = true);
92  virtual void setCheckpointModeUseCheckpointState(const DtString& scriptId, bool);
93  virtual bool checkpointModeUseCheckpointState(const DtString& scriptId) const;
94 
95  virtual int askUserQuestion(const DtString& scriptId,
96  const DtTranslatableStream& title, const DtTranslatableStream& message,
97  const std::vector<DtTranslatableStream>& options, int displayFlag);
98  virtual int statusOfUserQuestion(int questionId);
99  virtual void cancelUserQuestion(int questionId);
100 
102  virtual void addReactiveTaskType(const DtString&, const DtString& system = "");
103 
104  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
105 
107  virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName);
109  virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName);
111  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName);
113  virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName);
115  virtual void deleteTaskVisualization(int taskId, const DtString& visName);
117 
118  virtual bool createPSR();
119 
120  static DtSimComponent* creator(const DtString& name,
121  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
122  DtReaderWriterRegistry* parentRegistry);
123 
124  virtual std::vector<std::string> availableReactiveTasks() const;
125  virtual DtString systemFor(const DtString& scriptId) const;
126 
127 protected:
131 
132  virtual bool shouldInvokeCheck(DtRwScriptReactiveTaskEntry* entry);
133 
134  virtual DtRwScriptReactiveTaskEntry* createDefaultEntry(const DtString& scriptId, const DtString& system = "");
135  virtual bool createAndInitScriptInterface(DtRwScriptReactiveTaskEntry* entry, DtRwVariableBindings* params, bool loadState = false);
136 
137  virtual void activateReactiveTask(DtRwScriptReactiveTaskEntry* entry);
138  virtual void disableReactiveTask(DtRwScriptReactiveTaskEntry* entry, bool cancelActive);
139 
140  virtual void processSetReactiveTaskCallback(DtSetDataRequest* setMsg);
141  virtual void processSetCancel(DtSetReactiveTaskCancel* setMsg);
142  virtual void processSetDisabled(DtSetReactiveTaskDisabled* setMsg);
143  virtual void processSetEnabled(DtSetReactiveTaskEnabled* setMsg);
144  virtual void processSetPriority(DtSetReactiveTaskPriority* setMsg);
145  virtual void processSetTable(DtSetReactiveTaskTable* setMsg);
146 
147  virtual void setupReactiveTasks();
148 
149  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
150 
151  virtual bool doesScriptIdApply(const DtString& scriptId) const;
152  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData) const;
153 
154  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
155  virtual void processUserQuestionOperation(DtSimMessage*);
156 
157  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
158 
159  virtual void addReactiveTaskEntry(const DtString& scriptId, DtRwScriptReactiveTaskEntry* entry, bool deleteOnUpdate = true);
160 
161 protected:
163  DtForceType myCurrentForceType;
164 
165  std::map<DtString, DtString> myAdditionalReactiveTasks;
166 
167  std::map<DtString, bool> mySavedCheckpointMode;
168  std::map<DtString, double> mySavedTickPeriodSettings;
169  std::map<DtString, bool> mySavedTickWhilePausedSettings;
170 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)