![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 00002 /******************************************************************************* 00003 ** Copyright (c) 2010 MAK Technologies, Inc. 00004 ** All rights reserved. 00005 *******************************************************************************/ 00006 00007 #pragma once 00008 00009 #include <vrfLua/vrfLuaDefines.h> 00010 #include <vrfLua/scriptPSR.h> 00011 00012 #include <vrfobjcore/singleTaskControllerComponent.h> 00013 #include <vrftasks/userTask.h> 00014 #include <vrfobjcore/entityTargetInformation.h> 00015 00016 #include <lua.hpp> 00017 #include <lauxlib.h> 00018 #include <lualib.h> 00019 00020 class DtAnalogOutputPort; 00021 class DtBooleanOutputPort; 00022 class DtConstrainedIntegerOutputPort; 00023 class DtConstrainedAnalogOutputPort; 00024 class DtOutputPortGroup; 00025 class DtGroundVehicleStateRepository; 00026 class DtScenario; 00027 class DtAnalogOutputPort; 00028 class DtAnalogOutputPort; 00029 class DtOutputPortGroup; 00030 class DtSensorContactListInputPort; 00031 class DtSensorContactInfoList; 00032 class DtVrfObjectMessage; 00033 class DtTextReport; 00034 class DtSetLocationRequest; 00035 00036 namespace vrfLua 00037 { 00038 class DtLuaScriptManager; 00039 00041 const char DtLuaScriptControllerType[] = "lua-script-controller"; 00042 00044 static void setLocationRequestCallack(DtSimMessage * msg, void * usrData); 00045 00047 static void textRadioMessageCallback(DtSimMessage * msg, void * usrData); 00048 00053 class DT_DLL_vrfLua DtLuaScriptController : public DtSingleTaskControllerComponent 00054 { 00055 public: 00056 00058 DtLuaScriptController(const DtString & name, DtVrfObject* owner, 00059 DtSimManager * simManager, DtComponentDescriptor* desc = NULL, 00060 DtReaderWriterRegistry * parentRegistry = 0); 00061 00063 virtual ~DtLuaScriptController(); 00064 00066 DtLuaScriptController(const DtLuaScriptController& orig); 00067 00069 DtLuaScriptController& operator=(const DtLuaScriptController& orig); 00070 00071 virtual bool init(DtLuaScriptManager* manager); 00072 00073 virtual bool createScriptPSR(); 00074 00075 virtual void setLuaState(lua_State* L); 00076 virtual lua_State* getLuaState(); 00077 00079 virtual DtString type() const; 00080 00082 static DtSimComponent* creator(const DtString& name, 00083 DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc, 00084 DtReaderWriterRegistry* parentRegistry); 00085 00087 00089 virtual void registerTaskMsgCallbacks(); 00091 00093 virtual void unregisterTaskMsgCallbacks(); 00094 00095 00097 const DtSensorContactInfoList& getSensorContacts(); 00098 00104 static void setScriptCallback(DtSimMessage* msg, void* usr); 00105 virtual void processSetScript(DtSimMessage* msg); 00106 void setScript(const DtString & name); 00107 virtual DtString getScriptName(); 00108 virtual void setScriptNameAndLoad(const DtString & name); 00109 virtual DtString getScriptSerialization(); 00110 virtual void setScriptFromSerialization(const DtString & buffer); 00112 00116 static void setViewTargetCallback(DtSimMessage* msg, void* usr); 00117 00120 virtual void processSetViewTarget(DtSimMessage* msg); 00121 00122 00125 virtual void processTextRadioMessage(DtTextReport * textReport); 00126 00129 virtual void processLocationRequest(DtSetLocationRequest * textReport); 00130 00133 virtual DtBoolean checkTick(); 00134 00140 virtual void NotifyTaskCompleted(bool success = true); 00141 00144 virtual void clearTask(); 00146 00150 virtual void tick(); 00151 00152 virtual void firstTick(); 00153 00154 virtual bool tickWhileDestroyed() const; 00155 00156 00157 protected: 00158 00159 virtual DtBoolean createPortGroups(); 00162 virtual DtBoolean createPorts(); 00163 00164 static void requestScriptNameCallback(const DtVrfObjectMessage * msg, void* usr); 00165 virtual void processRequestScriptName(const DtVrfObjectMessage * msg); 00166 00167 virtual DtBoolean deactivateOutputControl() 00168 { 00169 return DtFalse; 00170 } 00171 00172 virtual void sendScriptName(const DtString& script, const DtString& origSender); 00173 00174 static void aboutToSaveCheckpointCallback(DtScenario& scn, void* usr); 00177 virtual void processAboutToSaveCheckpoint(); 00178 00179 static void postLoadCheckpointCallback(const DtScenario& scn, void* usr); 00180 static void postRewindCallback(void* usr); 00183 virtual void processPostLoadCheckpoint(); 00184 00185 00186 protected: 00187 00188 DtUserTask myUserTask; 00189 00191 DtScriptPSR* myScriptPSR; 00192 DtLuaScriptManager* myScriptManager; 00193 00194 bool myFirstTick; 00195 00197 DtString myLUAScript; 00198 00200 lua_State* myLState; 00201 00202 bool m_luaScriptWarningShown; 00203 }; 00204 } 00205