15 #include <luabind/luabind.hpp>
66 virtual void setLuaState(lua_State* L);
67 virtual lua_State* getLuaState();
69 virtual std::string dumpLuaStack()
const;
70 virtual int luaStackSize()
const;
71 virtual void collectGarbage();
98 virtual bool initializeVRFLuaExtensions(lua_State* L);
99 virtual bool importTaskParams(lua_State* L);
102 virtual bool importSetParams(lua_State* L);
105 virtual luabind::object createLuaTableFromRegistry(lua_State* L,
const DtReaderWriterRegistry& rwRegistry,
bool requireMetadata =
true);
108 static void addKeyToIgnore(
const std::string&);
111 static void removeKeyToIgnore(
const std::string&);
114 void luaEndTask(
bool success);
123 virtual void luaStopScenarioEventWithRewind(
DtScriptVrfObject eventName,
bool rewind);
131 virtual int luaSendEmbeddedEntityTask(std::string eeName, std::string taskName, luabind::object
const& parms);
133 virtual int luaSendEmbeddedEntityTaskActAsSubtask(std::string eeName, std::string taskName,
134 luabind::object
const& parms,
bool actAsSubtask);
136 virtual int luaSendEmbeddedEntitySet(std::string eeName, std::string setName, luabind::object
const& parms);
141 int luaStartSubtask(
const std::string taskName, luabind::object
const& parameters);
143 void luaStopSubtask(
int subtaskId);
145 void luaStopAllSubtasks();
147 bool luaIsSubtaskRunning(
int subtaskId);
149 bool luaIsSubtaskComplete(
int subtaskId);
151 bool luaIsSubtaskCanceled(
int subtaskId);
153 bool luaSubtaskResult(
int subtaskId);
157 void luaCleanupInactiveSubtaskStatus();
161 void luaSendReportWithoutRecipients(const::std::string reportType,
162 luabind::object
const& parameters);
163 void luaSendReport(const::std::string reportType,
164 luabind::object
const& reciptients,
165 luabind::object
const& parameters);
169 luabind::object
const& parameters);
170 int luaSendTaskActAsSubtask(
DtScriptVrfObject&
object, const::std::string taskName,
171 luabind::object
const& parameters,
bool actAsSubtask);
173 luabind::object
const& parameters);
174 int luaSendRadioTaskActAsSubtask(
DtScriptVrfObject&
object, const::std::string taskName,
175 luabind::object
const& parameters,
bool actAsSubtask);
176 int luaSendTaskActAsSubtaskWithRadio(
DtScriptVrfObject&
object, const::std::string taskName,
177 luabind::object
const& parameters,
bool actAsSubtask,
bool sendWithRadio);
180 void luaStopAllTasks();
183 void luaSendSetDataToSelf(const::std::string setName,
184 luabind::object
const& parameters);
188 luabind::object
const& parameters);
190 luabind::object
const& parameters);
192 luabind::object
const& parameters,
bool useRadio);
194 bool luaIsTaskAvailable(const::std::string taskName);
195 bool luaIsSetAvailable(const::std::string setName);
198 luabind::object luaGetReactionStatus();
208 luabind::object luaGetOrbatList();
211 std::string luaGetScriptId();
214 std::string luaGetSystemName();
217 luabind::object luaGetObjectsNearWithFilter(
const DtLocation3D& loc,
double distance, luabind::object
const& parameters);
219 luabind::object luaGetScriptAttribute(
const std::string& attributeName,
bool&
error);
222 luabind::object luaGetVrfObjects();
226 luabind::object luaGetDesignatorsNearWithFilter(
const DtLocation3D& loc,
double distance,
227 const luabind::object& params);
229 luabind::object luaGetDesignatorsNear(
const DtLocation3D& loc,
double distance);
234 DtLuaFeatureSet luaGetFeaturesWithinArea(luabind::object
const& points, luabind::object
const& attributes);
237 DtLuaFeatureSet luaGetFeaturesWithinAreaNoAttributes(luabind::object
const& points);
262 boost::shared_ptr<DtLuaAsyncJob> generateRandomPoints(
const luabind::object& parameters);
265 boost::shared_ptr<DtLuaAsyncJob> findNearbyPointOfInterest(
const int type);
268 boost::shared_ptr<DtLuaAsyncJob> findCoverPoint(
270 double threatRadius,
double distanceFromThreat,
double range,
unsigned numberOfPoints);
273 luabind::object findLadders(lua_State* L,
const DtLocation3D& startLocation,
double range);
275 luabind::object findLaddersWithId(lua_State* L,
const DtLocation3D& startLocation,
double range,
const unsigned int id);
278 boost::shared_ptr<DtLuaAsyncJob> findPathToLocation(
280 bool useAbstractGraphs,
const DtLocation3D& avoidLocation,
double avoidanceRadius);
287 boost::shared_ptr<DtLuaAsyncJob> luaNavigateThroughFeatures(
const luabind::object& parameters);
293 boost::shared_ptr<DtLuaAsyncJob> reserveEmbarkationSlot(
DtScriptVrfObject&
object,
int slotNumber);
296 boost::shared_ptr<DtLuaAsyncJob> getEmbarkationEgressPoints(
DtScriptVrfObject&
object);
298 void luaSendMessage(
const DtScriptVrfObject& receiver,
const std::string& message);
299 void luaSendRadioMessage(
const DtScriptVrfObject& receiver,
const std::string& message);
300 void luaDeleteObject(std::string
const& receiver);
307 const std::string& influenceName, luabind::object
const& influenceParams);
330 virtual std::vector<DtScriptVrfObject> luaGetCloudLayers();
341 virtual void luaSetPrecipitationIntensity(
DtScriptVrfObject&
object,
double intensity);
344 virtual void luaSetVisibilityDistance(
DtScriptVrfObject&
object,
double distance);
347 virtual void luaSetUnderwaterVisibility(
DtScriptVrfObject&
object,
double visibility);
348 virtual void luaSetSurfaceTransparency(
DtScriptVrfObject&
object,
double transparency);
350 virtual void luaSetSwellStateDirection(
DtScriptVrfObject&
object,
double direction);
352 virtual void luaSetSeaStateDirection(
DtScriptVrfObject&
object,
double direction);
353 virtual void luaSetWindDrivenSeaStateEnabled(
DtScriptVrfObject&
object,
bool enabled);
357 virtual void luaSetFogColor(
DtScriptVrfObject&
object,
double red,
double green,
double blue);
385 virtual double luaGetFogHeightByLocation(
const DtLocation3D&
object);
386 virtual void luaGetFogColor(
DtScriptVrfObject&
object,
double* red,
double* green,
double* blue);
387 virtual void luaGetFogColorByLocation(
const DtLocation3D&
object,
double* red,
double* green,
double* blue);
390 virtual double luaGetExpectedIllumination(
DtScriptVrfObject&
object,
double dateAndTimeOfDay);
392 virtual double luaGetSnowAccumulationByLocation(
const DtLocation3D&
object);
394 virtual double luaGetSnowMinimumAltitudeByLocation(
const DtLocation3D&
object);
396 virtual double luaGetSnowRoadAccumulationByLocation(
const DtLocation3D&
object);
398 virtual double luaGetRainAccumulationByLocation(
const DtLocation3D&
object);
400 virtual double luaGetAirTemperatureByLocation(
const DtLocation3D&
object);
401 virtual unsigned int luaGetPrecipitationByLocation(
const DtLocation3D& location,
double*);
402 virtual double luaGetPrecipitationIntensityByLocation(
const DtLocation3D&
object);
403 virtual unsigned int luaGetPrecipitationTypeByLocation(
const DtLocation3D&
object);
404 virtual int luaGetCloudCoverByLocation(
const DtLocation3D&
object);
405 virtual double luaGetVisibilityDistanceByLocation(
const DtLocation3D&
object);
406 virtual double luaGetWindDirectionByLocation(
const DtLocation3D&
object);
407 virtual double luaGetWindSpeedByLocation(
const DtLocation3D&
object);
408 virtual double luaGetUnderwaterVisibilityByLocation(
const DtLocation3D&
object);
409 virtual double luaGetSurfaceTransparencyByLocation(
const DtLocation3D&
object);
410 virtual unsigned int luaGetSwellStateByLocation(
const DtLocation3D&
object);
411 virtual double luaGetSwellStateDirectionByLocation(
const DtLocation3D&
object);
412 virtual unsigned int luaGetSeaStateByLocation(
const DtLocation3D&
object);
413 virtual double luaGetSeaStateDirectionByLocation(
const DtLocation3D&
object);
414 virtual bool luaGetWindDrivenSeaStateEnabledByLocation(
const DtLocation3D&
object);
415 virtual double luaGetChoppinessByLocation(
const DtLocation3D&
object);
416 virtual double luaGetSurgeDepthByLocation(
const DtLocation3D&
object);
417 virtual int luaGetPriorityByLocation(
const DtLocation3D&
object);
418 virtual double luaGetIlluminationByLocation(
const DtLocation3D&
object);
419 virtual double luaGetExpectedIlluminationByLocation(
const DtLocation3D&
object,
double dateAndTimeOfDay);
424 virtual double luaRunDurationTime();
425 virtual void luaRunForDuration(
double);
426 virtual void luaStopSimulationDurationTimer();
431 virtual void luaSetCheckpointMode(
bool);
432 virtual void initializeCheckpointStateTable(lua_State* L);
443 luabind::object
const& options,
int displayFlags);
445 luabind::object
const& options,
int displayFlags);
447 luabind::object
const& options,
int displayFlags);
448 virtual int luaAskUserQuestionSS(
const std::string& title,
const std::string& message,
449 luabind::object
const& options,
int displayFlags);
454 virtual int luaStatusOfUserQuestion(
int questionId);
457 virtual void luaCancelUserQuestion(
int questionId);
492 virtual std::vector<DtLocation3D> luaMakeOffsetPoints(luabind::object
const& fromPoints,
496 void luaCreateSelectionGroup(
const std::string& name, luabind::object
const& parameters);
501 void luaFinishTest(
const int status,
const std::string message);
504 bool luaUpdateTaskVisualization(
const std::string& visualizationName,
505 const std::string& visualizationType, luabind::object
const& parameters);
508 void luaDeleteTaskVisualization(
const std::string& visualizationName);
511 void luaRequire(lua_State* L,
const std::string&
filename);
515 unsigned luaBitwiseOr(
unsigned val1,
unsigned val2);
516 unsigned luaBitwiseAnd(
unsigned val1,
unsigned val2);
517 unsigned luaBitwiseXor(
unsigned val1,
unsigned val2);
518 unsigned luaBitwiseNot(
unsigned val);
519 unsigned luaBitwiseLeftShift(
unsigned val,
unsigned shift);
520 unsigned luaBitwiseRightShift(
unsigned val,
unsigned shift);
534 , myFunctionName(functionName)
546 return myFunctionName;
559 DtInfo <<
"DtLuaScriptFunctionReference::operator< attempt to compare with wrong type.\n";
571 const std::string& functionName);
575 const std::string& functionName);
588 virtual luabind::object luaGetParamPropertyFromType(
589 const std::string typeString, std::string
const& paramName);
592 virtual void putObjectsFromTableIntoGlobalTable(lua_State* state, luabind::object& table);
593 virtual void putObjectsFromGlobalTableIntoTable(lua_State* state, luabind::object& table);
599 virtual bool callLuaNoArgFunction(
const std::string& functionName,
bool* functionExists = 0);
601 virtual void updateFuncCallCount();
640 namespace luaScriptInterface
668 luabind::object
const& typeFilters,
bool observedOnly);
673 const std::string& propertyName, luabind::object
const& prop);
679 const std::string& propertyName, luabind::object
const& prop,
bool addIfNotFound);
689 luabind::object
const& keyValues, luabind::object
const& itemValue);
698 int index, luabind::object
const& itemValue);
708 luabind::object
const& keyValue, luabind::object
const& itemValue);
727 luabind::object
const& keyValues,
int& index);
749 luabind::object
const& keyValue);
768 luabind::object
const& keyValues,
int& index);
790 luabind::object
const& keyValue);
794 const luabind::object & value,
virtual void invokePostSetDataCallback(DtScriptFunctionReferencePtr functionReference, DtSetDataRequestMessage *setDatRequest)=0
Implement to invoke the function referenced by functionReference.
virtual bool operator<(const DtScriptFunctionReference &other) const
Required for std::set.
Definition: luaScriptInterfaceImpl.h:549
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
virtual void addPostSetDataCallback(const DtSetMessageType &setDataType, DtScriptFunctionReferencePtr functionReference)
Adds a callback to be invoked after the specified type of set data request is executed.
virtual bool invokeInit()=0
luabind::object luaGetParameterPropertyListItemByIndex(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, int index)
Returns an object containing the value of the of an item in the given parameter property.
luabind::object luaGetParamProperty(lua_State *L, const DtScriptVrfObject &entity, std::string const ¶mName)
Returns an object containing the value of the requested parameter property.
luabind::object * myCheckpointStateTable
Definition: luaScriptInterfaceImpl.h:625
bool luaSetStatePropertyMapItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValue, luabind::object const &itemValue)
Sets a single item in a map state property to the given value.
bool luaSetOrAddStateProperty(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &prop, bool addIfNotFound)
Sets the specified state property with the given value.
static GlobalInterfaceExtensions theLuaInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:623
std::vector< LuaExtension > GlobalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:621
lua_State * myLState
Definition: luaScriptInterfaceImpl.h:603
virtual bool invokeResume()=0
virtual bool loadState(const DtReaderWriter *savedState)=0
Called when the scenario is loaded.
unsigned myFuncCallCount
Definition: luaScriptInterfaceImpl.h:604
bool luaSetStatePropertyListItemByIndex(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, int index, luabind::object const &itemValue)
Finds the item in the list at the specified index and updates it to the new value.
virtual void invokeCheckInit()=0
const DtVrfObject * onlyForEntity
Definition: luaScriptInterfaceImpl.h:617
luabind::object luaGetParameterPropertyListItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValues, int &index)
Returns an object containing the value of the of an item in the given parameter property.
Definition: readerWriter.h:85
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:265
Default on in debug, off in release.
Definition: objectCounter.h:31
virtual void removePostSetDataCallback(const DtSetMessageType &setDataType, DtScriptFunctionReferencePtr functionReference)
Remove a callback invoked after the specified type of set data request is executed.
Definition: readerWriterRegistry.h:39
virtual DtReaderWriter * saveState()=0
Called when the scenario is saved.
luabind::object luaGetStatePropertyListItemByIndex(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, int index)
Returns an object containing the value of the of an item in the given state property.
LocalInterfaceExtensions myInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:608
virtual bool loadScript(bool reload=false)=0
This will be called by the parent to let the interface know when to load the script.
bool myLuaScriptWarningShown
Definition: luaScriptInterfaceImpl.h:605
static ReaderWriterToLuaTableMap theReaderWriterToLuaTableMap
Definition: luaScriptInterfaceImpl.h:628
std::string functionName() const
Definition: luaScriptInterfaceImpl.h:544
DtLuaScriptFunctionReference(const std::string &functionName)
Definition: luaScriptInterfaceImpl.h:532
luabind::object luaGetStatePropertyMapItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValue)
Returns an object containing the value of the of an item in the given state property.
! VectorOffset3D is a direction vector that is relative to some direction specified by a Vector3D...
Definition: scriptGeometry.h:416
LuaExtension(const LuaExtension &orig)
Definition: luaScriptInterfaceImpl.h:613
virtual DtString type() const =0
Script engine type.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
Represents a feature geometry.
Definition: luaFeatureGeometry.h:25
static const std::map< DtString, rwToLuaBindObjectFcn > & rwToLuaBindObjectMap()
Definition: luaScriptInterfaceImpl.h:33
luabind::object(* ReaderWriterToLuaTableFcn)(lua_State *LS, const DtReaderWriter *rwString, DtVrfObjectManager *mgr, const DtString ¶meterType)
When adding decoder functions to turn reader/writer into lua tables, the format must be of the follow...
Definition: luaScriptInterfaceImpl.h:30
luabind::object luaGetSystemAttribute(const DtScriptComponentSystem &system, const std::string &attributeName, bool *error, lua_State *L)
virtual void invokeDisable()=0
Only called for reactive tasks which can be enabled but not active.
virtual void invokeTick()=0
This will be called by the parent to invoke the script tick.
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
luabind::object luaGetTargetPriorityList(lua_State *L, const DtScriptVrfObject &thisEntity)
Gets the target priority list that this entity has.
boost::shared_ptr< DtScriptFunctionReference > DtScriptFunctionReferencePtr
Shared ptr to DtScriptFunctionReference.
Definition: scriptInterface.h:50
luabind::object luaGetStatePropertyListItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValues, int &index)
Returns an object containing the value of the of an item in the given state property.
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
Override of DtScriptInterface::DtScriptFunctionReference that holds a function reference by function ...
Definition: luaScriptInterfaceImpl.h:529
std::vector< DtLuaScriptInterfaceExtension * > LocalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:607
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
luabind::object luaGetEntityParam(lua_State *L, const DtScriptVrfObject &entity, std::string const ¶mName)
luabind::object luaGetStateProperty(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName)
Returns an object containing the value of the requested state property.
virtual void processClearForReuse()
This function should be overridden by the inheritor to clear out any task specific variables...
Definition: asyncJobServer.h:39
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
std::list< DtScriptVrfObject > luaGetContactsWithFilter(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &typeFilters, bool observedOnly)
This function supports the script API.
bool luaSetStateProperty(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &prop)
Sets the specified state property with the given value.
DtLuaScriptInterfaceExtension *(* CreatorFcn)(void *usr)
Prototype for DtLuaScriptInterfaceExtension creator function.
Definition: luaScriptInterfaceExtension.h:34
DtScriptInterface & operator=(const DtScriptInterface &other)
virtual bool invokeCheck()=0
The DtLuaFeatureSet class is a wrapper around a DtFeatureSet that will provide feature information fo...
Definition: luaFeatureSet.h:28
LuaExtension()
Definition: luaScriptInterfaceImpl.h:612
bool luaSetStatePropertyListItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValues, luabind::object const &itemValue)
Sets a single item in a list state property to the given value.
luabind::object luaGetContactInfo(lua_State *L, const DtScriptVrfObject &thisEntity, const DtScriptVrfObject &otherEntity)
Gets the perceived contact info that this entity has for another entity.
std::map< DtString, ReaderWriterToLuaTableFcn > ReaderWriterToLuaTableMap
Definition: luaScriptInterfaceImpl.h:627
DtLuaScriptInterfaceExtension.
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool luaSetSystemAttribute(DtScriptComponentSystem &system, const std::string &attributeName, const luabind::object &value, lua_State *L)
Contains Extended DI-Guy Object net types.
void * usr
Definition: luaScriptInterfaceImpl.h:618
Definition: luaScriptInterfaceImpl.h:610
This class is a wrapper for a DtCompSystem for use by scripts.
Definition: scriptComponentSystem.h:19
This class is a two-way interface between the script language and its parent controller.
Definition: scriptInterface.h:28
std::string myFunctionName
Definition: luaScriptInterfaceImpl.h:565
virtual void invokeSuspend()=0
voidpf uLong offset
Definition: ioapi.h:42
A DtSetDataRequestMessage is a DtRadioMsg with a pointer to a setDataRequest.
Definition: setDataRequestMessage.h:23
Instances of DtInfluenceInteractionExtension are used to store state data for Influence interactions ...
Definition: influenceInteractionExtension.h:29
luabind::object(* rwToLuaBindObjectFcn)(DtReaderWriter *rw, lua_State *L)
Definition: luaScriptInterfaceImpl.h:642
luabind::object luaGetParameterPropertyMapItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValue)
Returns an object containing the value of the of an item in the given parameter property.
virtual void invokeShutdown()=0
virtual ~DtLuaScriptFunctionReference()
Definition: luaScriptInterfaceImpl.h:539
Definition: scriptVrfObject.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22