15 #include <luabind/luabind.hpp>
37 #ifdef DtObjectDebugger_Enable
70 virtual void setLuaState(lua_State* L);
71 virtual lua_State* getLuaState();
73 virtual std::string dumpLuaStack()
const;
74 virtual int luaStackSize()
const;
75 virtual void collectGarbage();
102 virtual bool initializeVRFLuaExtensions(lua_State* L);
103 virtual bool importTaskParams(lua_State* L);
106 virtual bool importSetParams(lua_State* L);
109 virtual luabind::object createLuaTableFromRegistry(lua_State* L,
const DtReaderWriterRegistry& rwRegistry,
bool requireMetadata =
true,
bool hasParamMetaData =
true);
112 static void addKeyToIgnore(
const std::string&);
115 static void removeKeyToIgnore(
const std::string&);
118 void luaEndTask(
bool success);
127 virtual void luaStopScenarioEventWithRewind(
DtScriptVrfObject eventName,
bool rewind);
135 virtual int luaSendEmbeddedEntityTask(std::string eeName, std::string taskName, luabind::object
const& parms);
137 virtual int luaSendEmbeddedEntityTaskActAsSubtask(std::string eeName, std::string taskName,
138 luabind::object
const& parms,
bool actAsSubtask);
140 virtual int luaSendEmbeddedEntitySet(std::string eeName, std::string setName, luabind::object
const& parms);
145 int luaStartSubtask(
const std::string taskName, luabind::object
const& parameters);
147 void luaStopSubtask(
int subtaskId);
149 void luaStopAllSubtasks();
151 bool luaIsSubtaskRunning(
int subtaskId);
153 bool luaIsSubtaskComplete(
int subtaskId);
155 bool luaIsSubtaskCanceled(
int subtaskId);
157 bool luaSubtaskResult(
int subtaskId);
161 void luaCleanupInactiveSubtaskStatus();
165 void luaSendReportWithoutRecipients(const::std::string reportType,
166 luabind::object
const& parameters);
167 void luaSendReport(const::std::string reportType,
168 luabind::object
const& reciptients,
169 luabind::object
const& parameters);
173 luabind::object
const& parameters);
174 int luaSendTaskActAsSubtask(
DtScriptVrfObject&
object, const::std::string taskName,
175 luabind::object
const& parameters,
bool actAsSubtask);
177 luabind::object
const& parameters);
178 int luaSendRadioTaskActAsSubtask(
DtScriptVrfObject&
object, const::std::string taskName,
179 luabind::object
const& parameters,
bool actAsSubtask);
180 int luaSendTaskActAsSubtaskWithRadio(
DtScriptVrfObject&
object, const::std::string taskName,
181 luabind::object
const& parameters,
bool actAsSubtask,
bool sendWithRadio);
184 void luaStopAllTasks();
187 void luaSendSetDataToSelf(const::std::string setName,
188 luabind::object
const& parameters);
192 luabind::object
const& parameters);
194 luabind::object
const& parameters);
196 luabind::object
const& parameters,
bool useRadio);
198 bool luaIsTaskAvailable(const::std::string taskName);
199 bool luaIsSetAvailable(const::std::string setName);
202 luabind::object luaGetReactionStatus();
212 luabind::object luaGetOrbatList();
215 std::string luaGetScriptId();
218 std::string luaGetSystemName();
221 luabind::object luaGetObjectsNearWithFilter(
const DtLocation3D& loc,
double distance, luabind::object
const& parameters);
223 luabind::object luaGetScriptAttribute(
const std::string& attributeName,
bool&
error);
226 luabind::object luaGetVrfObjects();
230 luabind::object luaGetDesignatorsNearWithFilter(
const DtLocation3D& loc,
double distance,
231 const luabind::object& params);
233 luabind::object luaGetDesignatorsNear(
const DtLocation3D& loc,
double distance);
238 DtLuaFeatureSet luaGetFeaturesWithinArea(luabind::object
const& points, luabind::object
const& attributes);
241 DtLuaFeatureSet luaGetFeaturesWithinAreaNoAttributes(luabind::object
const& points);
266 boost::shared_ptr<DtLuaAsyncJob> generateRandomPoints(
const luabind::object& parameters);
269 boost::shared_ptr<DtLuaAsyncJob> findNearbyPointOfInterest(
const int type);
272 boost::shared_ptr<DtLuaAsyncJob> findCoverPoint(
274 double threatRadius,
double distanceFromThreat,
double range,
unsigned numberOfPoints);
277 luabind::object findLadders(lua_State* L,
const DtLocation3D& startLocation,
double range);
279 luabind::object findLaddersWithId(lua_State* L,
const DtLocation3D& startLocation,
double range,
const unsigned int id);
282 boost::shared_ptr<DtLuaAsyncJob> findPathToLocation(
284 bool useAbstractGraphs,
const DtLocation3D& avoidLocation,
double avoidanceRadius);
291 boost::shared_ptr<DtLuaAsyncJob> luaNavigateThroughFeatures(
const luabind::object& parameters);
297 boost::shared_ptr<DtLuaAsyncJob> reserveEmbarkationSlot(
DtScriptVrfObject&
object,
int slotNumber);
300 boost::shared_ptr<DtLuaAsyncJob> getEmbarkationEgressPoints(
DtScriptVrfObject&
object);
302 void luaSendMessage(
const DtScriptVrfObject& receiver,
const std::string& message);
303 void luaSendRadioMessage(
const DtScriptVrfObject& receiver,
const std::string& message);
304 void luaDeleteObject(std::string
const& receiver);
307 void luaSendObjectMessage(
const DtScriptVrfObject& receiver,
const std::string& messageType,
const luabind::object& messageContents);
308 void luaSendRadioObjectMessage(
const DtScriptVrfObject& receiver,
const std::string& messageType,
const luabind::object& messageContents);
309 void luaRegisterForObjectMessage(
const std::string& messageType);
310 void luaUnregisterForObjectMessage(
const std::string& messageType);
317 const std::string& influenceName, luabind::object
const& influenceParams);
331 luabind::object luaGetCloudLayerDescriptionsAt(lua_State *L,
const DtLocation3D& location);
339 virtual double luaGetExpectedIllumination(
DtScriptVrfObject&
object,
double dateAndTimeOfDay);
340 virtual double luaGetSnowAccumulationByLocation(
const DtLocation3D&
object);
341 virtual double luaGetSnowRoadAccumulationByLocation(
const DtLocation3D&
object);
342 virtual double luaGetRainAccumulationByLocation(
const DtLocation3D&
object);
344 virtual double luaGetAirTemperatureByLocation(
const DtLocation3D&
object);
345 virtual double luaGetAirPressureByLocation(
const DtLocation3D&
object);
346 virtual unsigned int luaGetPrecipitationByLocation(
const DtLocation3D& location,
double*);
347 virtual double luaGetPrecipitationIntensityByLocation(
const DtLocation3D&
object);
348 virtual unsigned int luaGetPrecipitationTypeByLocation(
const DtLocation3D&
object);
349 virtual double luaGetVisibilityDistanceByLocation(
const DtLocation3D&
object);
350 virtual int luaGetVisibilityObscurantByLocation(
const DtLocation3D&
object);
351 virtual double luaGetWindDirectionByLocation(
const DtLocation3D&
object);
352 virtual double luaGetWindSpeedByLocation(
const DtLocation3D&
object);
353 virtual double luaGetUnderwaterVisibilityByLocation(
const DtLocation3D&
object);
354 virtual unsigned int luaGetSwellStateByLocation(
const DtLocation3D&
object);
355 virtual double luaGetSwellStateDirectionByLocation(
const DtLocation3D&
object);
356 virtual unsigned int luaGetSeaStateByLocation(
const DtLocation3D&
object);
357 virtual double luaGetSeaStateDirectionByLocation(
const DtLocation3D&
object);
358 virtual double luaGetSurgeDepthByLocation(
const DtLocation3D&
object);
359 virtual double luaGetIlluminationByLocation(
const DtLocation3D&
object);
360 virtual double luaGetExpectedIlluminationByLocation(
const DtLocation3D&
object,
double dateAndTimeOfDay);
365 virtual double luaRunDurationTime();
366 virtual void luaRunForDuration(
double);
367 virtual void luaStopSimulationDurationTimer();
372 virtual void luaSetCheckpointMode(
bool);
373 virtual void initializeCheckpointStateTable(lua_State* L);
384 luabind::object
const& options,
int displayFlags);
386 luabind::object
const& options,
int displayFlags);
388 luabind::object
const& options,
int displayFlags);
389 virtual int luaAskUserQuestionSS(
const std::string& title,
const std::string& message,
390 luabind::object
const& options,
int displayFlags);
395 virtual int luaStatusOfUserQuestion(
int questionId);
398 virtual void luaCancelUserQuestion(
int questionId);
430 virtual std::vector<DtLocation3D> luaMakeOffsetPoints(luabind::object
const& fromPoints,
434 void luaCreateSelectionGroup(
const std::string& name, luabind::object
const& parameters);
439 void luaFinishTest(
const int status,
const std::string message);
442 bool luaUpdateTaskVisualization(
const std::string& visualizationName,
443 const std::string& visualizationType, luabind::object
const& parameters);
446 void luaDeleteTaskVisualization(
const std::string& visualizationName);
449 void luaRequire(lua_State* L,
const std::string&
filename);
453 unsigned luaBitwiseOr(
unsigned val1,
unsigned val2);
454 unsigned luaBitwiseAnd(
unsigned val1,
unsigned val2);
455 unsigned luaBitwiseXor(
unsigned val1,
unsigned val2);
456 unsigned luaBitwiseNot(
unsigned val);
457 unsigned luaBitwiseLeftShift(
unsigned val,
unsigned shift);
458 unsigned luaBitwiseRightShift(
unsigned val,
unsigned shift);
472 , myFunctionName(functionName)
484 return myFunctionName;
497 DtInfo <<
"DtLuaScriptFunctionReference::operator< attempt to compare with wrong type.\n";
509 const std::string& functionName);
513 const std::string& functionName);
526 virtual luabind::object luaGetParamPropertyFromType(
527 const std::string typeString, std::string
const& paramName);
530 virtual void putObjectsFromTableIntoGlobalTable(lua_State* state, luabind::object& table);
531 virtual void putObjectsFromGlobalTableIntoTable(lua_State* state, luabind::object& table);
534 virtual luabind::object luaGetSubordinateFunctionNames();
537 virtual luabind::object luaGetParameterSubordinateFunctionsFromType(
538 const std::string typeString);
544 virtual bool callLuaNoArgFunction(
const std::string& functionName,
bool* functionExists = 0);
546 virtual void updateFuncCallCount();
586 namespace luaScriptInterface
636 luabind::object
const& typeFilters,
bool observedOnly);
641 luabind::object
const& typeFilters,
bool observedOnly,
648 luabind::object
const& typeFilters,
bool observedOnly,
654 const std::string& propertyName, luabind::object
const& prop);
660 const std::string& propertyName, luabind::object
const& prop,
bool addIfNotFound);
670 luabind::object
const& keyValues, luabind::object
const& itemValue);
679 int index, luabind::object
const& itemValue);
689 luabind::object
const& keyValue, luabind::object
const& itemValue);
708 luabind::object
const& keyValues,
int& index);
730 luabind::object
const& keyValue);
749 luabind::object
const& keyValues,
int& index);
771 luabind::object
const& keyValue);
775 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:487
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:570
luabind::object luaGetSubordinateFunctions(lua_State *L, const DtScriptVrfObject &entity)
Return a table of {{"subordinate" = DtScriptVrfObject, "function" = string}}.
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:568
std::vector< LuaExtension > GlobalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:566
lua_State * myLState
Definition: luaScriptInterfaceImpl.h:548
virtual bool invokeResume()=0
virtual bool loadState(const DtReaderWriter *savedState)=0
Called when the scenario is loaded.
bool luaSetSubordinateFunctions(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &subsAndFunctions)
Given a table of {{"subordinate" = DtScriptVrfObject, "function" = string}} Set the state propert...
unsigned myFuncCallCount
Definition: luaScriptInterfaceImpl.h:549
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:562
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:553
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:550
static ReaderWriterToLuaTableMap theReaderWriterToLuaTableMap
Definition: luaScriptInterfaceImpl.h:573
luabind::object luaGetParameterSubordinateFunctions(lua_State *L, const DtScriptVrfObject &entity)
Gets a table of entity type and subordinate function handle pairs {{ENTITY_TYPE_STRING, FUNCTION_HANDLE_STRING}}.
std::string functionName() const
Definition: luaScriptInterfaceImpl.h:482
DtLuaScriptFunctionReference(const std::string &functionName)
Definition: luaScriptInterfaceImpl.h:470
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:424
Handles translation of messages from C++ structures into Lua tables and the reverse translation as we...
Definition: luaMessageInterface.h:23
std::string luaGetSubordinateFunction(lua_State *L, const DtScriptVrfObject &entity, const DtScriptVrfObject &subEntity)
Return a string representing subordinate function for indicated subordinate.
LuaExtension(const LuaExtension &orig)
Definition: luaScriptInterfaceImpl.h:558
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:35
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:32
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:467
std::vector< DtLuaScriptInterfaceExtension * > LocalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:552
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
bool luaSetSubordinateFunction(lua_State *L, const DtScriptVrfObject &entity, const DtScriptVrfObject &subEntity, const std::string &subFunction)
Given a table of {{"subordinate" = DtScriptVrfObject, "function" = string}} Set the state propert...
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
std::list< DtScriptVrfObject > luaGetContactsWithFilterAliveOnly(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &typeFilters, bool observedOnly, bool aliveOnly)
Same as luaGetContactsWithFiler but adds a boolean flag to indicate that only non-destroyed entities ...
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)
std::list< DtScriptVrfObject > luaGetHostileContactsWithFilterAliveOnly(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &typeFilters, bool observedOnly, bool aliveOnly)
This function is the same as luaGetContactsWithFilterAliveOnly, but it returns only hostile contacts...
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:557
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:572
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:563
Definition: luaScriptInterfaceImpl.h:555
DtLuaMessageInterface * myMessageInterface
Definition: luaScriptInterfaceImpl.h:574
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:503
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:588
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:477
Definition: scriptVrfObject.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22