MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / execute

Method execute

src/Core/Triggers/Trigger.cpp:123–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

121 }
122
123 void Trigger::execute()
124 {
125 m_currentlyTriggered = true;
126 Debug::Log->trace("<Trigger> Executing Trigger {0}", m_fullName);
127 for (std::size_t i = 0; i < m_registeredEnvs.size(); i++)
128 {
129 auto& rEnv = m_registeredEnvs[i];
130 if (*rEnv.active)
131 {
132 Debug::Log->trace("<Trigger> Calling Trigger Callback {0} on "
133 "Lua Environment {1} from Trigger {2}",
134 rEnv.callback, rEnv.environment.pointer(), m_fullName);
135 //sol::function callback = m_lua.get<sol::function>(rEnv.callback);
136
137 if (!rEnv.call)
138 {
139 rEnv.call = makeCallback(m_lua, this->getTriggerLuaTableName(), rEnv);
140 }
141
142 sol::protected_function_result result = rEnv.call();
143 if (!result.valid())
144 {
145 const auto errObj = result.get<sol::error>();
146 const std::string errMsg = "\n \""
147 + Utils::String::replace(errObj.what(), "\n", "\n ")
148 + "\"";
149 const std::string fullName = this->getNamespace() + "."
150 + this->getGroup() + "." + this->getName();
151 throw Exceptions::TriggerExecutionError(
152 fullName, rEnv.id, rEnv.callback, errMsg, EXC_INFO);
153 }
154 }
155 }
156 m_lua["__TRIGGERS"][this->getTriggerLuaTableName()]["ArgTable"].set(
157 sol::new_table());
158 if (!m_envsToRemove.empty())
159 {
160 for (sol::environment envToRemove : m_envsToRemove)
161 {
162 m_registeredEnvs.erase(
163 std::remove_if(m_registeredEnvs.begin(), m_registeredEnvs.end(),
164 [&envToRemove](
165 TriggerEnv& env) { return env.environment == envToRemove; }),
166 m_registeredEnvs.end());
167 }
168 }
169 m_currentlyTriggered = false;
170 }
171
172 void Trigger::pushParameterFromLua(const std::string& name, sol::object parameter)
173 {

Callers 2

TriggerGroup.cppFile · 0.45
updateMethod · 0.45

Calls 15

getNamespaceMethod · 0.95
getGroupMethod · 0.95
getNameMethod · 0.95
makeCallbackFunction · 0.85
new_tableClass · 0.85
traceMethod · 0.80
replaceFunction · 0.50
sizeMethod · 0.45
pointerMethod · 0.45
callMethod · 0.45

Tested by

no test coverage detected