13 #include "vlutil/vlString.h"
63 if (lhs.first < rhs.first)
return true;
64 else if (lhs.first > rhs.first)
return false;
65 else if (*lhs.second.get() < *rhs.second.get())
return true;
83 virtual bool invokeInit() = 0;
84 virtual void invokeSuspend() = 0;
85 virtual bool invokeResume() = 0;
88 virtual void invokeTick() = 0;
91 virtual bool loadScript(
bool reload =
false) = 0;
94 virtual void invokeCheckInit() = 0;
95 virtual bool invokeCheck() = 0;
97 virtual void invokeShutdown() = 0;
100 virtual void invokeUpdateDisplayGraph() = 0;
104 virtual void invokeDisable() = 0;
109 virtual void setTaskId(
int taskId) { myTaskId = taskId; }
110 virtual int taskId()
const {
return myTaskId; }
118 virtual void setScriptPath(
const DtFilename& scriptPath) { myScriptPath = scriptPath; }
119 virtual const DtFilename&
scriptPath()
const {
return myScriptPath; }
130 virtual bool updateTaskVariables();
148 virtual void processClearForReuse();
150 virtual void setTaskStarting(
bool v);
151 virtual bool taskStarting()
const;
155 virtual void setTaskResuming(
bool v);
156 virtual bool taskResuming()
const;
161 virtual void setIsBackgroundProces(
bool isBgProc);
162 virtual bool isBackgroundProcess()
const;
167 virtual void setIsSet(
bool isSet);
168 virtual bool isSet()
const;
174 virtual bool isGraphCapable()
const;
178 virtual void setIsGraphCapable(
bool isCapable =
true);
183 virtual bool shouldGenerateGraphOutput()
const;
187 virtual void setShouldGenerateGraphOutput(
const bool doGenerate,
const DtUUID& sender);
193 virtual void processGraphCommands(
const std::string& dotFileName);
205 double scriptGetExerciseTime();
207 int scriptGetApplicationId();
209 double scriptGetSimulationTime();
211 double scriptGetTimeMultiplier();
213 double scriptGetTimeOfDay();
215 double scriptGetDateAndTimeOfDay();
218 double scriptGetWindSpeed();
221 double scriptGetWindDirection();
224 double scriptGetMagneticDeclination(
const DtLocation3D &location);
228 void printError(
const std::string message);
229 void printErrorToChannel(
const std::string channel,
const std::string message);
231 void printWarn(
const std::string message);
232 void printWarnToChannel(
const std::string channel,
const std::string message);
234 void printInfo(
const std::string message);
235 void printInfoToChannel(
const std::string channel,
const std::string message);
237 void printVerbose(
const std::string message);
238 void printVerboseToChannel(
const std::string channel,
const std::string message);
240 void printDebug(
const std::string message);
241 void printDebugToChannel(
const std::string channel,
const std::string message);
243 bool entityTypeMatches(
const std::string&,
const std::string&);
246 void setTickPeriod(
double);
249 void setTickWhilePaused(
bool);
254 void setRespondToNewSensorContacts(
bool);
259 DtScriptFunctionReferencePtr functionReference);
264 DtScriptFunctionReferencePtr functionReference);
268 virtual void clearPostSetDataCallbacks();
275 static void postSetDataCallback(
DtSimMessage* msg,
void* usr);
283 static void postTickCallback(
void* usr);
284 virtual void processPostTick();
291 virtual void invokePostSetDataCallback(
292 DtScriptFunctionReferencePtr functionReference,
306 virtual double getTerrainAltitude(
const double lat,
const double lon,
307 bool& dataAvailable, std::string &surface)
const;
311 virtual double getTerrainAltitudeBelow(
const DtLocation3D& point,
312 bool& available, std::string &surfaceString)
330 virtual double getGroundAltitude(
const double lat,
const double lon,
331 bool&isWater,
bool& dataAvailable);
334 virtual void chordIntersectionDebug(
const DtLocation3D& startLoc,
347 virtual bool doesChordHitTerrain(
const DtLocation3D &pt1,
349 bool& dataAvailable)
const;
369 virtual DtLocation3D findClosestPointInNavigationAreaInRadius(
372 virtual DtLocation3D findClosestPointInNavigationAreaInRadiusAndVertLimit(
373 const DtLocation3D& point,
const double radius,
const double verticalLimit,
379 bool findFarthestPositionAlongHeading(
381 const double heading,
const double maxDistance,
382 DtLocation3D& stopPoint,
double& distanceReached)
const;
385 double searchRadius,
bool& dataAvailable,
bool& success,
389 virtual std::list<std::string> getDynamicTerrainFeatureChangeTypes(
390 const DtLocation3D& location,
double radius,
bool& dataVailable);
394 virtual std::list<DtLocation3D> getDynamicTerrainFeatureLocationsForChangeType(
395 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
399 virtual std::list<std::string> getDynamicTerrainFeatureValuesForChangeType(
400 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
403 virtual void changeDynamicTerrain(
const std::string& changeType,
const std::string& changeValue,
406 bool forcesHostile(std::string force1, std::string force2);
412 std::list<std::string> entityTypesForEquipment(
const std::string& equipmentType);
415 virtual double gaussian();
419 virtual void setGraphCapable();
427 virtual void scriptTaskComplete(
bool success);
429 virtual void scriptTaskError();
433 virtual bool scriptText(
DtString& text);
436 virtual bool scriptPath(
DtString& path);
440 virtual bool getParamMetaDataType(
const DtString& paramName,
DtString& typeName);
DtFilename myScriptPath
Definition: scriptInterface.h:445
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
bool myTaskResuming
Definition: scriptInterface.h:452
virtual void processEntityDestroyed()
Can be overridden to perform some processing when the entity is destroyed.
Definition: scriptInterface.h:199
bool operator()(DtPostCallbackEntry lhs, DtPostCallbackEntry rhs) const
Definition: scriptInterface.h:61
virtual ~DtScriptFunctionReference()
Definition: scriptInterface.h:46
int myTaskId
Definition: scriptInterface.h:442
bool myExecutingSetDataCallbacks
Set to true when invoking post set data callbacks.
Definition: scriptInterface.h:477
virtual const DtRwVariableBindings & taskVariables() const
Definition: scriptInterface.h:129
virtual void setScriptPath(const DtFilename &scriptPath)
Definition: scriptInterface.h:118
virtual void setTaskVariables(const DtRwVariableBindings &variables)
Definition: scriptInterface.h:128
virtual int taskId() const
Definition: scriptInterface.h:110
DtString mySystemName
Definition: scriptInterface.h:444
std::vector< DtSimMessage * > DtSetDataMessageVector
Definition: scriptInterface.h:71
std::set< DtPostCallbackEntry, PostSetDataCallbackLessThan > DtPostSetDataCallbackSet
Definition: scriptInterface.h:70
Definition: readerWriter.h:85
virtual void setController(DtScriptTaskControllerInterface *controller)
Definition: scriptInterface.h:195
virtual void setEntity(DtLocalObject *entity)
Definition: scriptInterface.h:121
DtScriptFunctionReference()
Definition: scriptInterface.h:45
Comparison operator for DtPostSetDataCallbackSet.
Definition: scriptInterface.h:59
std::pair< DtGenericMessageType, DtScriptFunctionReferencePtr > DtPostCallbackEntry
Matches a set data request type with a DtScriptFunctionReferencePtr.
Definition: scriptInterface.h:56
virtual DtLocalObject * entity() const
Definition: scriptInterface.h:122
bool myIsGraphCapable
Indicates the the script being run by this interface can generate graphs for processing and display i...
Definition: scriptInterface.h:482
bool myShouldGenerateGraphOutput
Indicates that this script should generate graphical output. This flag is made available to scripts t...
Definition: scriptInterface.h:490
virtual const DtFilename & scriptPath() const
Definition: scriptInterface.h:119
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
Definition: scriptMultiTaskController.h:23
DtPostSetDataCallbackSet mySetDataCallbacks
Callbacks registered from the scripting language. Registration/unregistration is done using vrf:addPo...
Definition: scriptInterface.h:458
DtScriptTaskControllerInterface * myControllerInterface
Definition: scriptInterface.h:446
DtLocalObject * myEntity
Definition: scriptInterface.h:447
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtPostCallbackEntryPendingChanges myPendingSetDataCallbackEntries
If a post set data callback is added or removed while invoking callbacks add to this map instead of i...
Definition: scriptInterface.h:467
bool myTaskStarting
Indicates that a new task is starting, and should be initialized on the next tick.
Definition: scriptInterface.h:451
File: simMsg.h.
Definition: simMessage.h:35
DtRwVariableBindings myTaskVariables
Definition: scriptInterface.h:449
static DtScriptInterfaceFactory * theFactoryInstance
Definition: scriptInterface.h:532
DtUUID myGraphRecipient
Keep track of who sends the graph requests, and send messages back to them.
Definition: scriptInterface.h:494
boost::shared_ptr< DtScriptFunctionReference > DtScriptFunctionReferencePtr
Shared ptr to DtScriptFunctionReference.
Definition: scriptInterface.h:53
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
Abstract object used to hold a reference to a function defined in the script language, to be used later to invoke that function. Used for registering callbacks to be invoked after specified types of set data requests are executed. For this functionality to be used in a derived script interface implementation, a derived class must be implemented to represent a reference to a function in the script language.
Definition: scriptInterface.h:42
Definition: asyncJobServer.h:39
DtGenericMessageType myScriptId
Definition: scriptInterface.h:443
DtSetDataMessageVector myPendingSetDataMessages
If a set data request is executed while invoking callbacks, add it to this vector instead of mySetDat...
Definition: scriptInterface.h:474
std::map< DtString, DtScriptInterfaceCreatorFunc > myCreators
Definition: scriptInterface.h:531
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
bool myIsBackgroundProcess
Definition: scriptInterface.h:453
DT_DLL_vrfutil bool intersection(const DtRailSegment *currentSegment, const DtRailSegment *nextSegment)
Given two segments, determine if where they meet is an intersection or just a bend in the road...
bool myIsSet
Definition: scriptInterface.h:454
virtual DtScriptTaskControllerInterface * controller()
Definition: scriptInterface.h:196
DtScriptInterface *(* DtScriptInterfaceCreatorFunc)(DtSimulationServices *)
Factory.
Definition: scriptInterface.h:504
virtual void setTaskId(int taskId)
Definition: scriptInterface.h:109
This class is a two-way interface between the script language and its parent controller. There are functions that either the parent controller will call on the script interface (such as tick() ) and there will be functions the script interface will call on the parent controller to inform the parent of status updates and for data access.
Definition: scriptInterface.h:31
virtual void init()
Derived class inits may do things, so init should always be called.
Definition: scriptInterface.h:125
A DtSetDataRequestMessage is a DtRadioMsg with a pointer to a setDataRequest. The type of the DtSetDa...
Definition: setDataRequestMessage.h:29
Definition: scriptTaskControllerInterface.h:19
virtual void setSystemName(const DtString &system)
Definition: scriptInterface.h:115
DtSimulationServices * mySimulationServices
Definition: scriptInterface.h:448
virtual void setScriptId(const DtString &scriptId)
Definition: scriptInterface.h:112
std::map< DtPostCallbackEntry, bool > DtPostCallbackEntryPendingChanges
Definition: scriptInterface.h:72
virtual const DtGenericMessageType & scriptId() const
Definition: scriptInterface.h:113
Definition: scriptInterface.h:506
virtual const DtString & systemName() const
Definition: scriptInterface.h:116
DtSetDataMessageVector mySetDataMessages
Stores copies of set data request messages that callbacks have been registered for. These are deleted after they are used in processPostTick.
Definition: scriptInterface.h:462
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86
Definition: scriptVrfObject.h:29
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22
bool myCantFindDotMsg
Indicates that the dot program could not be found (and a message to that effect was printed)...
Definition: scriptInterface.h:498