diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-23 13:49:34 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-23 13:49:34 +1000 |
commit | 121d27446b42c960014b2e69999dad73322b05f3 (patch) | |
tree | 2a1bbbd55de5628fcd03b64d0c49710e26d64243 /source/game/scripting/StarWorldLuaBindings.cpp | |
parent | d93b02682994730a2b4d33c6604e0b997b7ee977 (diff) |
world.callScriptContext
Diffstat (limited to 'source/game/scripting/StarWorldLuaBindings.cpp')
-rw-r--r-- | source/game/scripting/StarWorldLuaBindings.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/game/scripting/StarWorldLuaBindings.cpp b/source/game/scripting/StarWorldLuaBindings.cpp index da4f7c8..6d1648e 100644 --- a/source/game/scripting/StarWorldLuaBindings.cpp +++ b/source/game/scripting/StarWorldLuaBindings.cpp @@ -383,6 +383,7 @@ namespace LuaBindings { callbacks.registerCallbackWithSignature<void, Vec2F, Maybe<bool>>("setPlayerStart", bind(ServerWorldCallbacks::setPlayerStart, world, _1, _2)); callbacks.registerCallbackWithSignature<List<EntityId>>("players", bind(ServerWorldCallbacks::players, world)); callbacks.registerCallbackWithSignature<LuaString, LuaEngine&>("fidelity", bind(ServerWorldCallbacks::fidelity, world, _1)); + callbacks.registerCallbackWithSignature<Maybe<LuaValue>, String, String, LuaVariadic<LuaValue>>("callScriptContext", bind(ServerWorldCallbacks::callScriptContext, world, _1, _2, _3)); callbacks.registerCallbackWithSignature<double>("skyTime", [serverWorld]() { return serverWorld->sky()->epochTime(); @@ -1168,6 +1169,13 @@ namespace LuaBindings { return engine.createString(WorldServerFidelityNames.getRight(as<WorldServer>(world)->fidelity())); } + Maybe<LuaValue> ServerWorldCallbacks::callScriptContext(World* world, String const& contextName, String const& function, LuaVariadic<LuaValue> const& args) { + auto context = as<WorldServer>(world)->scriptContext(contextName); + if (!context) + throw StarException::format("Context {} does not exist", contextName); + return context->invoke(function, args); + } + void WorldDebugCallbacks::debugPoint(Vec2F const& arg1, Color const& arg2) { SpatialLogger::logPoint("world", arg1, arg2.toRgba()); } |