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();
210 int scriptGetApplicationId();
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&);
251 void setTickPeriod(
double);
254 void setTickWhilePaused(
bool);
259 void setRespondToNewSensorContacts(
bool);
264 DtScriptFunctionReferencePtr functionReference);
269 DtScriptFunctionReferencePtr functionReference);
273 virtual void clearPostSetDataCallbacks();
280 static void postSetDataCallback(
DtSimMessage* msg,
void* usr);
288 static void postTickCallback(
void* usr);
289 virtual void processPostTick();
296 virtual void invokePostSetDataCallback(
297 DtScriptFunctionReferencePtr functionReference,
311 virtual double getTerrainAltitude(
const double lat,
const double lon,
312 bool& dataAvailable, std::string &surface)
const;
316 virtual double getTerrainAltitudeBelow(
const DtLocation3D& point,
317 bool& available, std::string &surfaceString)
335 virtual double getGroundAltitude(
const double lat,
const double lon,
336 bool&isWater,
bool& dataAvailable);
339 virtual void chordIntersectionDebug(
const DtLocation3D& startLoc,
352 virtual bool doesChordHitTerrain(
const DtLocation3D &pt1,
354 bool& dataAvailable)
const;
374 virtual DtLocation3D findClosestPointInNavigationAreaInRadius(
377 virtual DtLocation3D findClosestPointInNavigationAreaInRadiusAndVertLimit(
378 const DtLocation3D& point,
const double radius,
const double verticalLimit,
384 bool findFarthestPositionAlongHeading(
386 const double heading,
const double maxDistance,
387 DtLocation3D& stopPoint,
double& distanceReached)
const;
390 double searchRadius,
bool& dataAvailable,
bool& success,
394 virtual std::list<std::string> getDynamicTerrainFeatureChangeTypes(
395 const DtLocation3D& location,
double radius,
bool& dataVailable);
399 virtual std::list<DtLocation3D> getDynamicTerrainFeatureLocationsForChangeType(
400 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
404 virtual std::list<std::string> getDynamicTerrainFeatureValuesForChangeType(
405 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
408 virtual void changeDynamicTerrain(
const std::string& changeType,
const std::string& changeValue,
411 bool forcesHostile(std::string force1, std::string force2);
417 std::list<std::string> entityTypesForEquipment(
const std::string& equipmentType);
420 virtual double gaussian();
424 virtual void setGraphCapable();
432 virtual void scriptTaskComplete(
bool success);
434 virtual void scriptTaskError();
438 virtual bool scriptText(
DtString& text);
441 virtual bool scriptPath(
DtString& path);
445 virtual bool getParamMetaDataType(
const DtString& paramName,
DtString& typeName);
DtFilename myScriptPath
Definition: scriptInterface.h:450
UUID is a unique ID wrapper class.
Definition: uuid.h:59
bool myTaskResuming
Definition: scriptInterface.h:457
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:447
bool myExecutingSetDataCallbacks
Set to true when invoking post set data callbacks.
Definition: scriptInterface.h:482
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:449
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:487
bool myShouldGenerateGraphOutput
Indicates that this script should generate graphical output. This flag is made available to scripts t...
Definition: scriptInterface.h:495
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
Definition: scriptMultiTaskController.h:23
DtPostSetDataCallbackSet mySetDataCallbacks
Callbacks registered from the scripting language. Registration/unregistration is done using vrf:addPo...
Definition: scriptInterface.h:463
DtScriptTaskControllerInterface * myControllerInterface
Definition: scriptInterface.h:451
DtLocalObject * myEntity
Definition: scriptInterface.h:452
#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:472
bool myTaskStarting
Indicates that a new task is starting, and should be initialized on the next tick.
Definition: scriptInterface.h:456
File: simMsg.h.
Definition: simMessage.h:35
DtRwVariableBindings myTaskVariables
Definition: scriptInterface.h:454
static DtScriptInterfaceFactory * theFactoryInstance
Definition: scriptInterface.h:537
DtUUID myGraphRecipient
Keep track of who sends the graph requests, and send messages back to them.
Definition: scriptInterface.h:499
boost::shared_ptr< DtScriptFunctionReference > DtScriptFunctionReferencePtr
Shared ptr to DtScriptFunctionReference.
Definition: scriptInterface.h:54
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:448
DtSetDataMessageVector myPendingSetDataMessages
If a set data request is executed while invoking callbacks, add it to this vector instead of mySetDat...
Definition: scriptInterface.h:479
std::map< DtString, DtScriptInterfaceCreatorFunc > myCreators
Definition: scriptInterface.h:536
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:95
bool myIsBackgroundProcess
Definition: scriptInterface.h:458
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:459
virtual DtScriptTaskControllerInterface * controller()
Definition: scriptInterface.h:197
DtScriptInterface *(* DtScriptInterfaceCreatorFunc)(DtSimulationServices *)
Factory.
Definition: scriptInterface.h:509
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:453
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:511
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:467
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: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:503