VR-Forces 4.0.4 Class Documentation
include/vrfLua/luaScriptController.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)