6
6
7
7
// TODO: proper exception handling for Lua funcs!
8
8
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)
10
10
{
11
11
sol::protected_function_result result{ };
12
12
if (aFunc)
13
13
{
14
14
try
15
15
{
16
- result = aFunc (aArgs...);
16
+ result = aFunc (aArgs..., aEnv );
17
17
}
18
18
catch (std::exception& e)
19
19
{
@@ -74,9 +74,12 @@ ScriptContext::ScriptContext(LuaSandbox& aLuaSandbox, const std::filesystem::pat
74
74
75
75
auto loggerRef = m_logger;
76
76
std::string vkBindID = m_name + ' .' + acID;
77
- VKBind vkBind = { vkBindID, acDescription, [loggerRef, aCallback]()
77
+ VKBind vkBind = { vkBindID, acDescription, [loggerRef, aCallback, this ]()
78
78
{
79
- TryLuaFunction (loggerRef, aCallback);
79
+ auto & sb = m_sandbox[m_sandboxID];
80
+ auto & env = sb.GetEnvironment ();
81
+
82
+ TryLuaFunction (loggerRef, env, aCallback);
80
83
}};
81
84
82
85
m_vkBindInfos.emplace_back (VKBindInfo{vkBind});
@@ -130,37 +133,52 @@ const std::vector<VKBindInfo>& ScriptContext::GetBinds() const
130
133
131
134
void ScriptContext::TriggerOnInit () const
132
135
{
136
+ auto & sb = m_sandbox[m_sandboxID];
137
+ auto & env = sb.GetEnvironment ();
138
+
133
139
auto state = m_sandbox.GetState ();
134
140
135
- TryLuaFunction (m_logger, m_onInit);
141
+ TryLuaFunction (m_logger, env, m_onInit);
136
142
}
137
143
138
144
void ScriptContext::TriggerOnUpdate (float aDeltaTime) const
139
145
{
146
+ auto & sb = m_sandbox[m_sandboxID];
147
+ auto & env = sb.GetEnvironment ();
148
+
140
149
auto state = m_sandbox.GetState ();
141
150
142
- TryLuaFunction (m_logger, m_onUpdate, aDeltaTime);
151
+ TryLuaFunction (m_logger, env, m_onUpdate, aDeltaTime);
143
152
}
144
153
145
154
void ScriptContext::TriggerOnDraw () const
146
155
{
156
+ auto & sb = m_sandbox[m_sandboxID];
157
+ auto & env = sb.GetEnvironment ();
158
+
147
159
auto state = m_sandbox.GetState ();
148
160
149
- TryLuaFunction (m_logger, m_onDraw);
161
+ TryLuaFunction (m_logger, env, m_onDraw);
150
162
}
151
163
152
164
void ScriptContext::TriggerOnOverlayOpen () const
153
165
{
166
+ auto & sb = m_sandbox[m_sandboxID];
167
+ auto & env = sb.GetEnvironment ();
168
+
154
169
auto state = m_sandbox.GetState ();
155
170
156
- TryLuaFunction (m_logger, m_onOverlayOpen);
171
+ TryLuaFunction (m_logger, env, m_onOverlayOpen);
157
172
}
158
173
159
174
void ScriptContext::TriggerOnOverlayClose () const
160
175
{
176
+ auto & sb = m_sandbox[m_sandboxID];
177
+ auto & env = sb.GetEnvironment ();
178
+
161
179
auto state = m_sandbox.GetState ();
162
180
163
- TryLuaFunction (m_logger, m_onOverlayClose);
181
+ TryLuaFunction (m_logger, env, m_onOverlayClose);
164
182
}
165
183
166
184
sol::object ScriptContext::GetRootObject () const
@@ -170,7 +188,10 @@ sol::object ScriptContext::GetRootObject() const
170
188
171
189
void ScriptContext::TriggerOnShutdown () const
172
190
{
191
+ auto & sb = m_sandbox[m_sandboxID];
192
+ auto & env = sb.GetEnvironment ();
193
+
173
194
auto state = m_sandbox.GetState ();
174
195
175
- TryLuaFunction (m_logger, m_onShutdown);
196
+ TryLuaFunction (m_logger, env, m_onShutdown);
176
197
}
0 commit comments