From ed6139e18750d3357fd946f640eb2fa06b33d597 Mon Sep 17 00:00:00 2001 From: Fedor Zagumennov Date: Tue, 22 Jul 2025 14:27:32 +0300 Subject: [PATCH] Refactor Lua registration --- Sequence.cpp | 157 +------------------------------------------- SequenceLua.cpp | 171 ++++++++++++++++++++++++++++++++++++++++++++++++ SequenceLua.h | 5 ++ 3 files changed, 178 insertions(+), 155 deletions(-) create mode 100644 SequenceLua.cpp create mode 100644 SequenceLua.h diff --git a/Sequence.cpp b/Sequence.cpp index 3a7c074..b6a36f3 100644 --- a/Sequence.cpp +++ b/Sequence.cpp @@ -6,6 +6,7 @@ #include "LoadMap.h" #include "tinyxml.h" #include "POs.h" +#include "SequenceLua.h" template<> Sequence *Singleton::ms_Singleton=0; @@ -33,161 +34,7 @@ void Sequence::init(Ogre::Root* root,SceneManager* scene,SoundManager* sound) EventEntC::getSingleton().init(mSceneMgr); mRoot->addFrameListener(this); - lua_register(pLuaState, "openDoor",openDoor); - lua_register(pLuaState, "closeDoor",closeDoor); - lua_register(pLuaState, "lockDoor",lockDoor); - lua_register(pLuaState, "unlockDoor",unlockDoor); - lua_register(pLuaState, "toggleDoor",toggleDoor); - lua_register(pLuaState, "setRotSpeed",setRotSpeed); - lua_register(pLuaState, "toggleLight",toggleLight); - lua_register(pLuaState, "enableLight",enableLight); - lua_register(pLuaState, "getPixelCount1",getPixelCount1); - lua_register(pLuaState, "getPixelCount2",getPixelCount2); - lua_register(pLuaState, "disableLight",disableLight); - lua_register(pLuaState, "HUDflashText",flashText); - lua_register(pLuaState, "emitSound",emitSound); - lua_register(pLuaState, "disableAmbientSound",disableAmbientSound); - lua_register(pLuaState, "enableAmbientSound",enableAmbientSound); - lua_register(pLuaState, "emitSound2",emitSound2); - lua_register(pLuaState, "setCompositorEnabled",setCompositorEnab); - lua_register(pLuaState, "fragmentGPUProgramParams",fragmentGPUProgramParams); - lua_register(pLuaState, "fragmentGPUProgramTime",fragmentGPUProgramTime); - lua_register(pLuaState, "gameText",gameText); - lua_register(pLuaState, "gameText2",gameText2); - lua_register(pLuaState, "gameTextColor",gameTextColor); - lua_register(pLuaState, "gameTextSize",gameTextSize); - lua_register(pLuaState, "playMusic",playMusic); - lua_register(pLuaState, "toggleMusic",playMusic); - lua_register(pLuaState, "setMusicVolume",setMusicVolume); - lua_register(pLuaState, "stopMusic",stopMusic); - lua_register(pLuaState, "fadeoutMusic",fadeoutMusic); - lua_register(pLuaState, "activateMPReg",activateMPReg); - lua_register(pLuaState, "deactivateMPReg",deactivateMPReg); - lua_register(pLuaState, "setMPRegVolume",setMPRegVolume); - lua_register(pLuaState, "Fade",Fade); - lua_register(pLuaState, "FadeOut",FadeOut); - lua_register(pLuaState, "setSkyBox",setSkyBox); - lua_register(pLuaState, "toggleEntity",toggleEntity); - lua_register(pLuaState, "showEntity",showEntity); - lua_register(pLuaState, "materialEntity",materialEntity); - lua_register(pLuaState, "hideEntity",hideEntity); - lua_register(pLuaState, "playerShake",playerShake); - lua_register(pLuaState, "startCutScene",startCutScene); - lua_register(pLuaState, "startSeqScript",startSeqScript); - lua_register(pLuaState, "changeLevel",changeLevel); - lua_register(pLuaState, "HUDHide",hideHUD); - lua_register(pLuaState, "HUDEnable",enableHUD); - lua_register(pLuaState, "HUDDisable",disableHUD); - lua_register(pLuaState, "WeaponStrip",stripWeapons); - lua_register(pLuaState, "addWeapon",addWeapon); - lua_register(pLuaState, "reverseTrain",reverseTrain); - lua_register(pLuaState, "startTrain",startTrain); - lua_register(pLuaState, "setSpeedTrain",setSpeedTrain); - lua_register(pLuaState, "setAccTrain",setAccTrain); - lua_register(pLuaState, "setAccDoor",setAccDoor); - lua_register(pLuaState, "stopTrain",stopTrain); - lua_register(pLuaState, "startEvent",startEvent); - lua_register(pLuaState, "powerComputer",powerComputer); - lua_register(pLuaState, "enableTrainSaveMode",enableTrainSaveMode); - lua_register(pLuaState, "disableTrainSaveMode",disableTrainSaveMode); - lua_register(pLuaState, "createParticleSystem",createParticleSystem); - lua_register(pLuaState, "deleteParticleSystem",deleteParticleSystem); - lua_register(pLuaState, "setTimeK",setTimeK); - lua_register(pLuaState, "timeShift",timeShift); - lua_register(pLuaState, "killEverybody",killEverybody); - lua_register(pLuaState, "transformToPhys",transformToPhys); - lua_register(pLuaState, "freezeBod",freezeBod); - lua_register(pLuaState, "unfreezeBod",unfreezeBod); - lua_register(pLuaState, "forceDelete",forceDelete); - lua_register(pLuaState, "toggleParticleSystem",toggleParticleSystem); - lua_register(pLuaState, "toggleEmitter",toggleEmitter); - lua_register(pLuaState, "enableEmitter",enableEmitter); - lua_register(pLuaState, "disableEmitter",disableEmitter); - lua_register(pLuaState, "enableTrigger",enableTrigger); - lua_register(pLuaState, "disableTrigger",disableTrigger); - lua_register(pLuaState, "enableInventory",enableInventory); - lua_register(pLuaState, "disableInventory",disableInventory); - lua_register(pLuaState, "godmode",godmode); - lua_register(pLuaState, "COMSendData",COMSendData); - lua_register(pLuaState, "runScript",runScript); - lua_register(pLuaState, "enableTimer",enableTimer); - lua_register(pLuaState, "disableTimer",disableTimer); - lua_register(pLuaState, "toggleTimer",toggleTimer); - lua_register(pLuaState, "player__getposx",player__getposx); - lua_register(pLuaState,"player__getposy",player__getposy); - lua_register(pLuaState,"player__getposz",player__getposz); - lua_register(pLuaState,"player__allowFlash",player__allowFlash); - lua_register(pLuaState,"player__destroyFlash",player__destroyFlash); - lua_register(pLuaState,"player__toggleFlash",player__toggleFlash); - lua_register(pLuaState,"player__setRegeneration",player__setRegeneration); - lua_register(pLuaState,"cursor__getposx",cursor__getposx); - lua_register(pLuaState,"cursor__getposy",cursor__getposy); - lua_register(pLuaState,"bod__getpos",bod__getpos); - lua_register(pLuaState,"bod__setpos",bod__setpos); - lua_register(pLuaState,"bod__getpos2",bod__getpos2); - lua_register(pLuaState,"bod__setpos2",bod__setpos2); - lua_register(pLuaState,"nod__getpos2",nod__getpos2); - lua_register(pLuaState,"nod__getpos",nod__getpos); - lua_register(pLuaState,"nod__setpos2",nod__setpos2); - lua_register(pLuaState,"bod__getor",bod__getor); - lua_register(pLuaState,"bod__setor",bod__setor); - lua_register(pLuaState,"logMessage",logMessage); - lua_register(pLuaState,"player__getdirx",player__getdirx); - lua_register(pLuaState,"player__getdiry",player__getdiry); - lua_register(pLuaState,"player__getdirz",player__getdirz); - lua_register(pLuaState,"player__getdistf",player__getdistf); - lua_register(pLuaState,"set__register",set__register); - lua_register(pLuaState,"get__register",get__register); - lua_register(pLuaState,"add__register",add__register); - lua_register(pLuaState,"inc__register",inc__register); - lua_register(pLuaState,"dec__register",dec__register); - lua_register(pLuaState,"__all_npcEvent",__all_npcEvent); - lua_register(pLuaState,"npcEvent",npcEvent); - lua_register(pLuaState,"npcEvent2",npcEvent2); - lua_register(pLuaState,"toString",tostringl); - lua_register(pLuaState,"random_number",random_number); - lua_register(pLuaState,"VectorToString",tostringl2); - lua_register(pLuaState,"dssao",dssao); - lua_register(pLuaState,"setCameraParent",setCameraParent); - lua_register(pLuaState,"setFullCameraParent",setFullCameraParent); - lua_register(pLuaState,"resetCameraParent",resetCameraParent); - lua_register(pLuaState,"teleport",teleport); - lua_register(pLuaState,"teleport_rel",teleport_rel); - lua_register(pLuaState,"fireExtinguish",fireExtinguish); - lua_register(pLuaState,"fireFire",fireFire); - lua_register(pLuaState,"fireToggle",fireToggle); - lua_register(pLuaState,"addAmbientSound",addAmbientSound); - lua_register(pLuaState,"commandLeaderGroup",commandLeaderGroup); - lua_register(pLuaState,"setNearClipDist",setNearClipDist); - lua_register(pLuaState,"resetNearClipDist",resetNearClipDist); - lua_register(pLuaState,"setFarClipDist",setFarClipDist); - lua_register(pLuaState,"resetFarClipDist",resetFarClipDist); - lua_register(pLuaState,"shockCutScene",shockCutScene); - lua_register(pLuaState,"setFov",setFov); - lua_register(pLuaState,"getFov",getFov); - lua_register(pLuaState,"removeCutScene",removeCutScene2); - lua_register(pLuaState,"rotateFuzzyObject",rotateFuzzyObject); - lua_register(pLuaState,"exitAllComputers",exitAllComputers); - lua_register(pLuaState,"resetFov",resetFov); - lua_register(pLuaState,"destroyNPC",destroyNPC); - lua_register(pLuaState,"SkyX_setTimeMultiplier",SkyX_setTimeMultiplier); - lua_register(pLuaState,"SkyX_setHeightPosition",SkyX_setHeightPosition); - lua_register(pLuaState,"SkyX_setOuterRadius",SkyX_setOuterRadius); - lua_register(pLuaState,"SkyX_setInnerRadius",SkyX_setInnerRadius); - lua_register(pLuaState,"SkyX_setExposure",SkyX_setExposure); - lua_register(pLuaState,"SkyX_setMie",SkyX_setMie); - lua_register(pLuaState,"SkyX_setRayleighMultiplier",SkyX_setRayleighMultiplier); - lua_register(pLuaState,"SkyX_setSampleNumber",SkyX_setSampleNumber); - lua_register(pLuaState,"SkyX_updateParameters",SkyX_updateParameters); - lua_register(pLuaState,"turnoff__Module",turnoff__Module); - lua_register(pLuaState,"turnoff__Sequence",turnoff__Sequence); - lua_register(pLuaState,"turnoff__NPCManager",turnoff__NPCManager); - lua_register(pLuaState,"setNPCManagerStep",setNPCManagerStep); - lua_register(pLuaState,"deleteDoor",deleteDoor); - - //Load-on-the-go - lua_register(pLuaState,"processSequence",processSequence); - lua_register(pLuaState,"processDotScene",processDotScene); + SequenceLua::registerFunctions(pLuaState); pobjs=POs::getSingleton().getObjects(); OgreNewt::World* w = global::getSingleton().getWorld(); diff --git a/SequenceLua.cpp b/SequenceLua.cpp new file mode 100644 index 0000000..ef16ccd --- /dev/null +++ b/SequenceLua.cpp @@ -0,0 +1,171 @@ +#include "SequenceLua.h" +#include "Sequence.h" +extern "C" { +#include +} + +namespace { + struct Reg { const char* name; lua_CFunction func; }; +} + +void SequenceLua::registerFunctions(lua_State* L) +{ + const Reg funcs[] = { + {"openDoor", Sequence::openDoor}, + {"closeDoor", Sequence::closeDoor}, + {"lockDoor", Sequence::lockDoor}, + {"unlockDoor", Sequence::unlockDoor}, + {"toggleDoor", Sequence::toggleDoor}, + {"setRotSpeed", Sequence::setRotSpeed}, + {"toggleLight", Sequence::toggleLight}, + {"enableLight", Sequence::enableLight}, + {"getPixelCount1", Sequence::getPixelCount1}, + {"getPixelCount2", Sequence::getPixelCount2}, + {"disableLight", Sequence::disableLight}, + {"HUDflashText", Sequence::HUDflashText}, + {"emitSound", Sequence::emitSound}, + {"disableAmbientSound", Sequence::disableAmbientSound}, + {"enableAmbientSound", Sequence::enableAmbientSound}, + {"emitSound2", Sequence::emitSound2}, + {"setCompositorEnabled", Sequence::setCompositorEnabled}, + {"fragmentGPUProgramParams", Sequence::fragmentGPUProgramParams}, + {"fragmentGPUProgramTime", Sequence::fragmentGPUProgramTime}, + {"gameText", Sequence::gameText}, + {"gameText2", Sequence::gameText2}, + {"gameTextColor", Sequence::gameTextColor}, + {"gameTextSize", Sequence::gameTextSize}, + {"playMusic", Sequence::playMusic}, + {"toggleMusic", Sequence::toggleMusic}, + {"setMusicVolume", Sequence::setMusicVolume}, + {"stopMusic", Sequence::stopMusic}, + {"fadeoutMusic", Sequence::fadeoutMusic}, + {"activateMPReg", Sequence::activateMPReg}, + {"deactivateMPReg", Sequence::deactivateMPReg}, + {"setMPRegVolume", Sequence::setMPRegVolume}, + {"Fade", Sequence::Fade}, + {"FadeOut", Sequence::FadeOut}, + {"setSkyBox", Sequence::setSkyBox}, + {"toggleEntity", Sequence::toggleEntity}, + {"showEntity", Sequence::showEntity}, + {"materialEntity", Sequence::materialEntity}, + {"hideEntity", Sequence::hideEntity}, + {"playerShake", Sequence::playerShake}, + {"startCutScene", Sequence::startCutScene}, + {"startSeqScript", Sequence::startSeqScript}, + {"changeLevel", Sequence::changeLevel}, + {"HUDHide", Sequence::HUDHide}, + {"HUDEnable", Sequence::HUDEnable}, + {"HUDDisable", Sequence::HUDDisable}, + {"WeaponStrip", Sequence::WeaponStrip}, + {"addWeapon", Sequence::addWeapon}, + {"reverseTrain", Sequence::reverseTrain}, + {"startTrain", Sequence::startTrain}, + {"setSpeedTrain", Sequence::setSpeedTrain}, + {"setAccTrain", Sequence::setAccTrain}, + {"setAccDoor", Sequence::setAccDoor}, + {"stopTrain", Sequence::stopTrain}, + {"startEvent", Sequence::startEvent}, + {"powerComputer", Sequence::powerComputer}, + {"enableTrainSaveMode", Sequence::enableTrainSaveMode}, + {"disableTrainSaveMode", Sequence::disableTrainSaveMode}, + {"createParticleSystem", Sequence::createParticleSystem}, + {"deleteParticleSystem", Sequence::deleteParticleSystem}, + {"setTimeK", Sequence::setTimeK}, + {"timeShift", Sequence::timeShift}, + {"killEverybody", Sequence::killEverybody}, + {"transformToPhys", Sequence::transformToPhys}, + {"freezeBod", Sequence::freezeBod}, + {"unfreezeBod", Sequence::unfreezeBod}, + {"forceDelete", Sequence::forceDelete}, + {"toggleParticleSystem", Sequence::toggleParticleSystem}, + {"toggleEmitter", Sequence::toggleEmitter}, + {"enableEmitter", Sequence::enableEmitter}, + {"disableEmitter", Sequence::disableEmitter}, + {"enableTrigger", Sequence::enableTrigger}, + {"disableTrigger", Sequence::disableTrigger}, + {"enableInventory", Sequence::enableInventory}, + {"disableInventory", Sequence::disableInventory}, + {"godmode", Sequence::godmode}, + {"COMSendData", Sequence::COMSendData}, + {"runScript", Sequence::runScript}, + {"enableTimer", Sequence::enableTimer}, + {"disableTimer", Sequence::disableTimer}, + {"toggleTimer", Sequence::toggleTimer}, + {"player__getposx", Sequence::player__getposx}, + {"player__getposy", Sequence::player__getposy}, + {"player__getposz", Sequence::player__getposz}, + {"player__allowFlash", Sequence::player__allowFlash}, + {"player__destroyFlash", Sequence::player__destroyFlash}, + {"player__toggleFlash", Sequence::player__toggleFlash}, + {"player__setRegeneration", Sequence::player__setRegeneration}, + {"cursor__getposx", Sequence::cursor__getposx}, + {"cursor__getposy", Sequence::cursor__getposy}, + {"bod__getpos", Sequence::bod__getpos}, + {"bod__setpos", Sequence::bod__setpos}, + {"bod__getpos2", Sequence::bod__getpos2}, + {"bod__setpos2", Sequence::bod__setpos2}, + {"nod__getpos2", Sequence::nod__getpos2}, + {"nod__getpos", Sequence::nod__getpos}, + {"nod__setpos2", Sequence::nod__setpos2}, + {"bod__getor", Sequence::bod__getor}, + {"bod__setor", Sequence::bod__setor}, + {"logMessage", Sequence::logMessage}, + {"player__getdirx", Sequence::player__getdirx}, + {"player__getdiry", Sequence::player__getdiry}, + {"player__getdirz", Sequence::player__getdirz}, + {"player__getdistf", Sequence::player__getdistf}, + {"set__register", Sequence::set__register}, + {"get__register", Sequence::get__register}, + {"add__register", Sequence::add__register}, + {"inc__register", Sequence::inc__register}, + {"dec__register", Sequence::dec__register}, + {"__all_npcEvent", Sequence::__all_npcEvent}, + {"npcEvent", Sequence::npcEvent}, + {"npcEvent2", Sequence::npcEvent2}, + {"toString", Sequence::toString}, + {"random_number", Sequence::random_number}, + {"VectorToString", Sequence::VectorToString}, + {"dssao", Sequence::dssao}, + {"setCameraParent", Sequence::setCameraParent}, + {"setFullCameraParent", Sequence::setFullCameraParent}, + {"resetCameraParent", Sequence::resetCameraParent}, + {"teleport", Sequence::teleport}, + {"teleport_rel", Sequence::teleport_rel}, + {"fireExtinguish", Sequence::fireExtinguish}, + {"fireFire", Sequence::fireFire}, + {"fireToggle", Sequence::fireToggle}, + {"addAmbientSound", Sequence::addAmbientSound}, + {"commandLeaderGroup", Sequence::commandLeaderGroup}, + {"setNearClipDist", Sequence::setNearClipDist}, + {"resetNearClipDist", Sequence::resetNearClipDist}, + {"setFarClipDist", Sequence::setFarClipDist}, + {"resetFarClipDist", Sequence::resetFarClipDist}, + {"shockCutScene", Sequence::shockCutScene}, + {"setFov", Sequence::setFov}, + {"getFov", Sequence::getFov}, + {"removeCutScene", Sequence::removeCutScene}, + {"rotateFuzzyObject", Sequence::rotateFuzzyObject}, + {"exitAllComputers", Sequence::exitAllComputers}, + {"resetFov", Sequence::resetFov}, + {"destroyNPC", Sequence::destroyNPC}, + {"SkyX_setTimeMultiplier", Sequence::SkyX_setTimeMultiplier}, + {"SkyX_setHeightPosition", Sequence::SkyX_setHeightPosition}, + {"SkyX_setOuterRadius", Sequence::SkyX_setOuterRadius}, + {"SkyX_setInnerRadius", Sequence::SkyX_setInnerRadius}, + {"SkyX_setExposure", Sequence::SkyX_setExposure}, + {"SkyX_setMie", Sequence::SkyX_setMie}, + {"SkyX_setRayleighMultiplier", Sequence::SkyX_setRayleighMultiplier}, + {"SkyX_setSampleNumber", Sequence::SkyX_setSampleNumber}, + {"SkyX_updateParameters", Sequence::SkyX_updateParameters}, + {"turnoff__Module", Sequence::turnoff__Module}, + {"turnoff__Sequence", Sequence::turnoff__Sequence}, + {"turnoff__NPCManager", Sequence::turnoff__NPCManager}, + {"setNPCManagerStep", Sequence::setNPCManagerStep}, + {"deleteDoor", Sequence::deleteDoor}, + {"processSequence", Sequence::processSequence}, + {"processDotScene", Sequence::processDotScene}, + }; + for (const auto &r : funcs) { + lua_register(L, r.name, r.func); + } +} diff --git a/SequenceLua.h b/SequenceLua.h new file mode 100644 index 0000000..c79b0ac --- /dev/null +++ b/SequenceLua.h @@ -0,0 +1,5 @@ +#pragma once +struct lua_State; +namespace SequenceLua { + void registerFunctions(lua_State* L); +}