14 #include "vlutil/vlString.h"
60 if (lhs.first < rhs.first)
return true;
61 else if (lhs.first > rhs.first)
return false;
62 else if (*lhs.second.get() < *rhs.second.get())
return true;
80 virtual bool invokeInit() = 0;
81 virtual void invokeSuspend() = 0;
82 virtual bool invokeResume() = 0;
85 virtual void invokeTick() = 0;
88 virtual bool loadScript(
bool reload =
false) = 0;
90 virtual void invokeCheckInit() = 0;
91 virtual bool invokeCheck() = 0;
93 virtual void invokeShutdown() = 0;
97 virtual void invokeDisable() = 0;
102 virtual void setTaskId(
int taskId) { myTaskId = taskId; }
103 virtual int taskId()
const {
return myTaskId; }
111 virtual void setScriptPath(
const DtFilename& scriptPath) { myScriptPath = scriptPath; }
112 virtual const DtFilename&
scriptPath()
const {
return myScriptPath; }
123 virtual bool updateTaskVariables();
141 virtual void processClearForReuse();
143 virtual void setTaskStarting(
bool v);
144 virtual bool taskStarting()
const;
148 virtual void setTaskResuming(
bool v);
149 virtual bool taskResuming()
const;
154 virtual void setIsBackgroundProces(
bool isBgProc);
155 virtual bool isBackgroundProcess()
const;
160 virtual void setIsSet(
bool isSet);
161 virtual bool isSet()
const;
172 double scriptGetExerciseTime();
174 int scriptGetApplicationId();
176 double scriptGetSimulationTime();
178 double scriptGetTimeMultiplier();
180 double scriptGetTimeOfDay();
182 double scriptGetDateAndTimeOfDay();
185 double scriptGetWindSpeed();
188 double scriptGetWindDirection();
192 void printError(
const std::string message);
193 void printErrorToChannel(
const std::string channel,
const std::string message);
195 void printWarn(
const std::string message);
196 void printWarnToChannel(
const std::string channel,
const std::string message);
198 void printInfo(
const std::string message);
199 void printInfoToChannel(
const std::string channel,
const std::string message);
201 void printVerbose(
const std::string message);
202 void printVerboseToChannel(
const std::string channel,
const std::string message);
204 void printDebug(
const std::string message);
205 void printDebugToChannel(
const std::string channel,
const std::string message);
207 bool entityTypeMatches(
const std::string&,
const std::string&);
210 void setTickPeriod(
double);
213 void setTickWhilePaused(
bool);
218 void setRespondToNewSensorContacts(
bool);
223 DtScriptFunctionReferencePtr functionReference);
228 DtScriptFunctionReferencePtr functionReference);
232 virtual void clearPostSetDataCallbacks();
239 static void postSetDataCallback(
DtSimMessage* msg,
void* usr);
247 static void postTickCallback(
void* usr);
248 virtual void processPostTick();
255 virtual void invokePostSetDataCallback(
256 DtScriptFunctionReferencePtr functionReference,
270 virtual double getTerrainAltitude(
const double lat,
const double lon,
271 bool& dataAvailable, std::string &surface)
const;
275 virtual double getTerrainAltitudeBelow(
const DtLocation3D& point,
276 bool& available, std::string &surfaceString)
294 virtual double getGroundAltitude(
const double lat,
const double lon,
295 bool&isWater,
bool& dataAvailable);
298 virtual void chordIntersectionDebug(
const DtLocation3D& startLoc,
311 virtual bool doesChordHitTerrain(
const DtLocation3D &pt1,
313 bool& dataAvailable)
const;
333 virtual DtLocation3D findClosestPointInNavigationAreaInRadius(
336 virtual DtLocation3D findClosestPointInNavigationAreaInRadiusAndVertLimit(
337 const DtLocation3D& point,
const double radius,
const double verticalLimit,
343 bool findFarthestPositionAlongHeading(
345 const double heading,
const double maxDistance,
346 DtLocation3D& stopPoint,
double& distanceReached)
const;
349 double searchRadius,
bool& dataAvailable,
bool& success,
353 virtual std::list<std::string> getDynamicTerrainFeatureChangeTypes(
354 const DtLocation3D& location,
double radius,
bool& dataVailable);
358 virtual std::list<DtLocation3D> getDynamicTerrainFeatureLocationsForChangeType(
359 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
363 virtual std::list<std::string> getDynamicTerrainFeatureValuesForChangeType(
364 const std::string& changeType,
const DtLocation3D& location,
double radius,
bool& dataVailable);
367 virtual void changeDynamicTerrain(
const std::string& changeType,
const std::string& changeValue,
370 bool forcesHostile(std::string force1, std::string force2);
376 std::list<std::string> entityTypesForEquipment(
const std::string& equipmentType);
379 virtual double gaussian();
386 virtual void scriptTaskComplete(
bool success);
388 virtual void scriptTaskError();
392 virtual bool scriptText(
DtString& text);
395 virtual bool scriptPath(
DtString& path);
399 virtual bool getParamMetaDataType(
const DtString& paramName,
DtString& typeName);
DtFilename myScriptPath
Definition: scriptInterface.h:404
bool myTaskResuming
Definition: scriptInterface.h:410
virtual void processEntityDestroyed()
Can be overridden to perform some processing when the entity is destroyed.
Definition: scriptInterface.h:168
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
bool operator()(DtPostCallbackEntry lhs, DtPostCallbackEntry rhs) const
Definition: scriptInterface.h:58
DtScriptInterface *(* DtScriptInterfaceCreatorFunc)()
Factory.
Definition: scriptInterface.h:441
virtual ~DtScriptFunctionReference()
Definition: scriptInterface.h:43
int myTaskId
Definition: scriptInterface.h:401
bool myExecutingSetDataCallbacks
Set to true when invoking post set data callbacks.
Definition: scriptInterface.h:435
virtual const DtRwVariableBindings & taskVariables() const
Definition: scriptInterface.h:122
virtual void setScriptPath(const DtFilename &scriptPath)
Definition: scriptInterface.h:111
virtual void setTaskVariables(const DtRwVariableBindings &variables)
Definition: scriptInterface.h:121
virtual int taskId() const
Definition: scriptInterface.h:103
DtString mySystemName
Definition: scriptInterface.h:403
std::vector< DtSimMessage * > DtSetDataMessageVector
Definition: scriptInterface.h:68
virtual Instance * createInstance()
Definition: bdiQPropTree_subclasses.h:693
std::set< DtPostCallbackEntry, PostSetDataCallbackLessThan > DtPostSetDataCallbackSet
Definition: scriptInterface.h:67
Definition: readerWriter.h:85
virtual void setController(DtScriptTaskControllerInterface *controller)
Definition: scriptInterface.h:164
DtScriptFunctionReference()
Definition: scriptInterface.h:42
virtual DtVrfObject * entity() const
Definition: scriptInterface.h:115
Comparison operator for DtPostSetDataCallbackSet.
Definition: scriptInterface.h:56
std::pair< DtGenericMessageType, DtScriptFunctionReferencePtr > DtPostCallbackEntry
Matches a set data request type with a DtScriptFunctionReferencePtr.
Definition: scriptInterface.h:53
DtVrfObject * myEntity
Definition: scriptInterface.h:406
virtual const DtFilename & scriptPath() const
Definition: scriptInterface.h:112
ReaderWriter object that maintains a list of reader-writer variable bindings.
Definition: rwVariableBindings.h:27
DtPostSetDataCallbackSet mySetDataCallbacks
Callbacks registered from the scripting language.
Definition: scriptInterface.h:416
DtScriptTaskControllerInterface * myControllerInterface
Definition: scriptInterface.h:405
virtual void setEntity(DtVrfObject *entity)
Definition: scriptInterface.h:114
#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:425
bool myTaskStarting
Indicates that a new task is starting, and should be initialized on the next tick.
Definition: scriptInterface.h:409
File: simMsg.h.
Definition: simMessage.h:35
DtRwVariableBindings myTaskVariables
Definition: scriptInterface.h:407
static DtScriptInterfaceFactory * theFactoryInstance
Definition: scriptInterface.h:469
boost::shared_ptr< DtScriptFunctionReference > DtScriptFunctionReferencePtr
Shared ptr to DtScriptFunctionReference.
Definition: scriptInterface.h:50
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
*array controller(no time code)*/template< class Instance
//!//!//!//!//!//!//!//!//!//!//!//
Abstract object used to hold a reference to a function defined in the script language, to be used later to invoke that function.
Definition: scriptInterface.h:39
Definition: asyncJobServer.h:39
DtGenericMessageType myScriptId
Definition: scriptInterface.h:402
DtSetDataMessageVector myPendingSetDataMessages
If a set data request is executed while invoking callbacks, add it to this vector instead of mySetDat...
Definition: scriptInterface.h:432
std::map< DtString, DtScriptInterfaceCreatorFunc > myCreators
Definition: scriptInterface.h:468
bool myIsBackgroundProcess
Definition: scriptInterface.h:411
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:412
virtual DtScriptTaskControllerInterface * controller()
Definition: scriptInterface.h:165
virtual void setTaskId(int taskId)
Definition: scriptInterface.h:102
This class is a two-way interface between the script language and its parent controller.
Definition: scriptInterface.h:28
virtual void init()
Derived class inits may do things, so init should always be called.
Definition: scriptInterface.h:118
A DtSetDataRequestMessage is a DtRadioMsg with a pointer to a setDataRequest.
Definition: setDataRequestMessage.h:23
Definition: scriptTaskControllerInterface.h:22
virtual void setSystemName(const DtString &system)
Definition: scriptInterface.h:108
virtual void setScriptId(const DtString &scriptId)
Definition: scriptInterface.h:105
std::map< DtPostCallbackEntry, bool > DtPostCallbackEntryPendingChanges
Definition: scriptInterface.h:69
virtual const DtGenericMessageType & scriptId() const
Definition: scriptInterface.h:106
Definition: scriptInterface.h:443
virtual const DtString & systemName() const
Definition: scriptInterface.h:109
DtSetDataMessageVector mySetDataMessages
Stores copies of set data request messages that callbacks have been registered for.
Definition: scriptInterface.h:420
Definition: scriptVrfObject.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22