13 #include "vlutil/vlString.h"
64 if (lhs.first < rhs.first)
return true;
65 else if (lhs.first > rhs.first)
return false;
66 else if (*lhs.second.get() < *rhs.second.get())
return true;
84 virtual bool invokeInit() = 0;
85 virtual void invokeSuspend() = 0;
86 virtual bool invokeResume() = 0;
89 virtual void invokeTick() = 0;
92 virtual bool loadScript(
bool reload =
false) = 0;
95 virtual void invokeCheckInit() = 0;
96 virtual bool invokeCheck() = 0;
98 virtual void invokeShutdown() = 0;
101 virtual void invokeUpdateDisplayGraph() = 0;
105 virtual void invokeDisable() = 0;
110 virtual void setTaskId(
int taskId) { myTaskId = taskId; }
111 virtual int taskId()
const {
return myTaskId; }
119 virtual void setScriptPath(
const DtFilename& scriptPath) { myScriptPath = scriptPath; }
120 virtual const DtFilename&
scriptPath()
const {
return myScriptPath; }
131 virtual bool updateTaskVariables();
149 virtual void processClearForReuse();
151 virtual void setTaskStarting(
bool v);
152 virtual bool taskStarting()
const;
156 virtual void setTaskResuming(
bool v);
157 virtual bool taskResuming()
const;
162 virtual void setIsBackgroundProces(
bool isBgProc);
163 virtual bool isBackgroundProcess()
const;
168 virtual void setIsSet(
bool isSet);
169 virtual bool isSet()
const;
175 virtual bool isGraphCapable()
const;
179 virtual void setIsGraphCapable(
bool isCapable =
true);
184 virtual bool shouldGenerateGraphOutput()
const;
188 virtual void setShouldGenerateGraphOutput(
const bool doGenerate,
const DtUUID& sender);
194 virtual void processGraphCommands(
const std::string& dotFileName);
206 double scriptGetExerciseTime();
208 double scriptGetWallClockTime();
212 double scriptGetSimulationTime();
214 double scriptGetTimeMultiplier();
216 double scriptGetTimeOfDay();
218 double scriptGetDateAndTimeOfDay();
221 double scriptGetWindSpeed();
224 double scriptGetWindDirection();
227 double scriptGetMagneticDeclination(
const DtLocation3D &location);
230 std::list<DtScriptAerodromeObject> scriptGetAerodromesWithinRange(
DtLocation3D center,
double range);
233 void printError(
const std::string message);
234 void printErrorToChannel(
const std::string channel,
const std::string message);
236 void printWarn(
const std::string message);
237 void printWarnToChannel(
const std::string channel,
const std::string message);
239 void printInfo(
const std::string message);
240 void printInfoToChannel(
const std::string channel,
const std::string message);
242 void printVerbose(
const std::string message);
243 void printVerboseToChannel(
const std::string channel,
const std::string message);
245 void printDebug(
const std::string message);
246 void printDebugToChannel(
const std::string channel,
const std::string message);
248 bool entityTypeMatches(
const std::string&,
const std::string&);
249 std::string getEntityTypeDescription(
const std::string& entityType);
252 void setTickPeriod(
double);
255 void setTickWhilePaused(
bool);
260 void setRespondToNewSensorContacts(
bool);
265 DtScriptFunctionReferencePtr functionReference);
270 DtScriptFunctionReferencePtr functionReference);
274 virtual void clearPostSetDataCallbacks();
281 static void postSetDataCallback(
DtSimMessage* msg,
void* usr);
289 static void postTickCallback(
void* usr);
290 virtual void processPostTick();
297 virtual void invokePostSetDataCallback(
298 DtScriptFunctionReferencePtr functionReference,
312 virtual double getTerrainAltitude(
const double lat,
const double lon,
313 bool& dataAvailable, std::string &surface)
const;
317 virtual double getTerrainAltitudeBelow(
const DtLocation3D& point,
318 bool& available, std::string &surfaceString)
336 virtual double getGroundAltitude(
const double lat,
const double lon,
337 bool&isWater,
bool& dataAvailable);
340 virtual void chordIntersectionDebug(
const DtLocation3D& startLoc,
353 virtual bool doesChordHitTerrain(
const DtLocation3D &pt1,
355 bool& dataAvailable)
const;
368 bool chordIntersectsTerrainWithOptions(
const DtLocation3D& pt1,
375 virtual std::string getResourceTypeFromResourceName(std::string resourceName);
384 virtual DtLocation3D findClosestPointInNavigationAreaInRadius(
387 virtual DtLocation3D findClosestPointInNavigationAreaInRadiusAndVertLimit(
388 const DtLocation3D& point,
const double radius,
const double verticalLimit,
393 virtual bool matchPattern(std::string, std::string)
const;
397 bool findFarthestPositionAlongHeading(
399 const double heading,
const double maxDistance,
400 DtLocation3D& stopPoint,
double& distanceReached)
const;
403 double searchRadius,
bool& dataAvailable,
bool& success,
407 virtual std::list<std::string> getDynamicTerrainFeatureChangeTypes(
408 const DtLocation3D& location,
double radius,
bool& dataVailable);
412 virtual std::list<DtLocation3D> getDynamicTerrainFeatureLocationsForChangeType(
413 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
417 virtual std::list<std::string> getDynamicTerrainFeatureValuesForChangeType(
418 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
421 virtual void changeDynamicTerrain(
const std::string& changeType,
const std::string& changeValue,
424 bool forcesHostile(std::string force1, std::string force2);
430 std::list<std::string> entityTypesForEquipment(
const std::string& equipmentType);
433 virtual double gaussian();
437 virtual void setGraphCapable();
445 virtual void scriptTaskComplete(
bool success);
447 virtual void scriptTaskError();
451 virtual bool scriptText(
DtString& text);
454 virtual bool scriptPath(
DtString& path);
458 virtual bool getParamMetaDataType(
const DtString& paramName,
DtString& typeName);
DtFilename myScriptPath
Definition: scriptInterface.h:463
UUID is a unique ID wrapper class.
Definition: uuid.h:59
bool myTaskResuming
Definition: scriptInterface.h:470
virtual void processEntityDestroyed()
Can be overridden to perform some processing when the entity is destroyed.
Definition: scriptInterface.h:200
bool operator()(DtPostCallbackEntry lhs, DtPostCallbackEntry rhs) const
Definition: scriptInterface.h:62
virtual ~DtScriptFunctionReference()
Definition: scriptInterface.h:47
int myTaskId
Definition: scriptInterface.h:460
bool myExecutingSetDataCallbacks
Set to true when invoking post set data callbacks.
Definition: scriptInterface.h:495
virtual const DtRwVariableBindings & taskVariables() const
Definition: scriptInterface.h:130
virtual void setScriptPath(const DtFilename &scriptPath)
Definition: scriptInterface.h:119
virtual void setTaskVariables(const DtRwVariableBindings &variables)
Definition: scriptInterface.h:129
virtual int taskId() const
Definition: scriptInterface.h:111
DtString mySystemName
Definition: scriptInterface.h:462
std::vector< DtSimMessage * > DtSetDataMessageVector
Definition: scriptInterface.h:72
std::set< DtPostCallbackEntry, PostSetDataCallbackLessThan > DtPostSetDataCallbackSet
Definition: scriptInterface.h:71
Definition: readerWriter.h:85
virtual void setController(DtScriptTaskControllerInterface *controller)
Definition: scriptInterface.h:196
virtual void setEntity(DtLocalObject *entity)
Definition: scriptInterface.h:122
DtScriptFunctionReference()
Definition: scriptInterface.h:46
Comparison operator for DtPostSetDataCallbackSet.
Definition: scriptInterface.h:60
std::pair< DtGenericMessageType, DtScriptFunctionReferencePtr > DtPostCallbackEntry
Matches a set data request type with a DtScriptFunctionReferencePtr.
Definition: scriptInterface.h:57
virtual DtLocalObject * entity() const
Definition: scriptInterface.h:123
bool myIsGraphCapable
Indicates the the script being run by this interface can generate graphs for processing and display i...
Definition: scriptInterface.h:500
bool myShouldGenerateGraphOutput
Indicates that this script should generate graphical output. This flag is made available to scripts t...
Definition: scriptInterface.h:508
virtual const DtFilename & scriptPath() const
Definition: scriptInterface.h:120
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
std::shared_ptr< DtScriptFunctionReference > DtScriptFunctionReferencePtr
Shared ptr to DtScriptFunctionReference.
Definition: scriptInterface.h:54
Definition: scriptMultiTaskController.h:23
DtPostSetDataCallbackSet mySetDataCallbacks
Callbacks registered from the scripting language. Registration/unregistration is done using vrf:addPo...
Definition: scriptInterface.h:476
DtScriptTaskControllerInterface * myControllerInterface
Definition: scriptInterface.h:464
DtLocalObject * myEntity
Definition: scriptInterface.h:465
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Definition: scriptAerodromeObject.h:13
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:485
bool myTaskStarting
Indicates that a new task is starting, and should be initialized on the next tick.
Definition: scriptInterface.h:469
File: simMsg.h.
Definition: simMessage.h:35
DtRwVariableBindings myTaskVariables
Definition: scriptInterface.h:467
static DtScriptInterfaceFactory * theFactoryInstance
Definition: scriptInterface.h:550
DtUUID myGraphRecipient
Keep track of who sends the graph requests, and send messages back to them.
Definition: scriptInterface.h:512
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:43
Definition: asyncJobServer.h:39
DtGenericMessageType myScriptId
Definition: scriptInterface.h:461
DtSetDataMessageVector myPendingSetDataMessages
If a set data request is executed while invoking callbacks, add it to this vector instead of mySetDat...
Definition: scriptInterface.h:492
std::map< DtString, DtScriptInterfaceCreatorFunc > myCreators
Definition: scriptInterface.h:549
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
bool myIsBackgroundProcess
Definition: scriptInterface.h:471
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:472
virtual DtScriptTaskControllerInterface * controller()
Definition: scriptInterface.h:197
DtScriptInterface *(* DtScriptInterfaceCreatorFunc)(DtSimulationServices *)
Factory.
Definition: scriptInterface.h:522
virtual void setTaskId(int taskId)
Definition: scriptInterface.h:110
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:32
virtual void init()
Derived class inits may do things, so init should always be called.
Definition: scriptInterface.h:126
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:116
DtSimulationServices * mySimulationServices
Definition: scriptInterface.h:466
virtual void setScriptId(const DtString &scriptId)
Definition: scriptInterface.h:113
std::map< DtPostCallbackEntry, bool > DtPostCallbackEntryPendingChanges
Definition: scriptInterface.h:73
virtual const DtGenericMessageType & scriptId() const
Definition: scriptInterface.h:114
Definition: scriptInterface.h:524
virtual const DtString & systemName() const
Definition: scriptInterface.h:117
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:480
A locally simulated VRF object.
Definition: localObject.h:98
Definition: scriptVrfObject.h:30
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:516