Skip to content

Commit 2fb6047

Browse files
committed
Fix environment again
1 parent 00f3f5c commit 2fb6047

File tree

1 file changed

+31
-10
lines changed

1 file changed

+31
-10
lines changed

src/scripting/ScriptContext.cpp

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
// TODO: proper exception handling for Lua funcs!
88
template <typename ...Args>
9-
static sol::protected_function_result TryLuaFunction(std::shared_ptr<spdlog::logger> aLogger, sol::function aFunc, Args... aArgs)
9+
static sol::protected_function_result TryLuaFunction(std::shared_ptr<spdlog::logger> aLogger, sol::environment& aEnv, sol::function aFunc, Args... aArgs)
1010
{
1111
sol::protected_function_result result{ };
1212
if (aFunc)
1313
{
1414
try
1515
{
16-
result = aFunc(aArgs...);
16+
result = aFunc(aArgs..., aEnv);
1717
}
1818
catch(std::exception& e)
1919
{
@@ -74,9 +74,12 @@ ScriptContext::ScriptContext(LuaSandbox& aLuaSandbox, const std::filesystem::pat
7474

7575
auto loggerRef = m_logger;
7676
std::string vkBindID = m_name + '.' + acID;
77-
VKBind vkBind = { vkBindID, acDescription, [loggerRef, aCallback]()
77+
VKBind vkBind = { vkBindID, acDescription, [loggerRef, aCallback, this]()
7878
{
79-
TryLuaFunction(loggerRef, aCallback);
79+
auto& sb = m_sandbox[m_sandboxID];
80+
auto& env = sb.GetEnvironment();
81+
82+
TryLuaFunction(loggerRef, env, aCallback);
8083
}};
8184

8285
m_vkBindInfos.emplace_back(VKBindInfo{vkBind});
@@ -130,37 +133,52 @@ const std::vector<VKBindInfo>& ScriptContext::GetBinds() const
130133

131134
void ScriptContext::TriggerOnInit() const
132135
{
136+
auto& sb = m_sandbox[m_sandboxID];
137+
auto& env = sb.GetEnvironment();
138+
133139
auto state = m_sandbox.GetState();
134140

135-
TryLuaFunction(m_logger, m_onInit);
141+
TryLuaFunction(m_logger, env, m_onInit);
136142
}
137143

138144
void ScriptContext::TriggerOnUpdate(float aDeltaTime) const
139145
{
146+
auto& sb = m_sandbox[m_sandboxID];
147+
auto& env = sb.GetEnvironment();
148+
140149
auto state = m_sandbox.GetState();
141150

142-
TryLuaFunction(m_logger, m_onUpdate, aDeltaTime);
151+
TryLuaFunction(m_logger, env, m_onUpdate, aDeltaTime);
143152
}
144153

145154
void ScriptContext::TriggerOnDraw() const
146155
{
156+
auto& sb = m_sandbox[m_sandboxID];
157+
auto& env = sb.GetEnvironment();
158+
147159
auto state = m_sandbox.GetState();
148160

149-
TryLuaFunction(m_logger, m_onDraw);
161+
TryLuaFunction(m_logger, env, m_onDraw);
150162
}
151163

152164
void ScriptContext::TriggerOnOverlayOpen() const
153165
{
166+
auto& sb = m_sandbox[m_sandboxID];
167+
auto& env = sb.GetEnvironment();
168+
154169
auto state = m_sandbox.GetState();
155170

156-
TryLuaFunction(m_logger, m_onOverlayOpen);
171+
TryLuaFunction(m_logger, env, m_onOverlayOpen);
157172
}
158173

159174
void ScriptContext::TriggerOnOverlayClose() const
160175
{
176+
auto& sb = m_sandbox[m_sandboxID];
177+
auto& env = sb.GetEnvironment();
178+
161179
auto state = m_sandbox.GetState();
162180

163-
TryLuaFunction(m_logger, m_onOverlayClose);
181+
TryLuaFunction(m_logger, env, m_onOverlayClose);
164182
}
165183

166184
sol::object ScriptContext::GetRootObject() const
@@ -170,7 +188,10 @@ sol::object ScriptContext::GetRootObject() const
170188

171189
void ScriptContext::TriggerOnShutdown() const
172190
{
191+
auto& sb = m_sandbox[m_sandboxID];
192+
auto& env = sb.GetEnvironment();
193+
173194
auto state = m_sandbox.GetState();
174195

175-
TryLuaFunction(m_logger, m_onShutdown);
196+
TryLuaFunction(m_logger, env, m_onShutdown);
176197
}

0 commit comments

Comments
 (0)