MCPcopy Create free account
hub / github.com/deathkiller/jazz2-native / OnPerish

Method OnPerish

Sources/Jazz2/Scripting/ScriptActorWrapper.cpp:305–334  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

303 }
304
305 bool ScriptActorWrapper::OnPerish(ActorBase* collider)
306 {
307 if (_isDead->Get()) {
308 return ActorBase::OnPerish(collider);
309 }
310
311 asIScriptFunction* func = _obj->GetObjectType()->GetMethodByDecl("bool OnPerish()");
312 if (func == nullptr) {
313 return ActorBase::OnPerish(collider);
314 }
315
316 asIScriptEngine* engine = _obj->GetEngine();
317 asIScriptContext* ctx = engine->RequestContext();
318
319 ctx->Prepare(func);
320 ctx->SetObject(_obj);
321 std::int32_t r = ctx->Execute();
322 bool result;
323 if (r == asEXECUTION_EXCEPTION) {
324 LOGE("An exception \"{}\" occurred in \"{}\". Please correct the code and try again.",
325 ctx->GetExceptionString(), ctx->GetExceptionFunction()->GetDeclaration());
326 result = true;
327 } else {
328 result = (ctx->GetReturnByte() != 0);
329 }
330
331 engine->ReturnContext(ctx);
332
333 return (result && ActorBase::OnPerish(collider));
334 }
335
336 void ScriptActorWrapper::OnUpdate(float timeMult)
337 {

Callers

nothing calls this directly

Calls 3

GetEngineMethod · 0.80
ExecuteMethod · 0.80
GetMethod · 0.45

Tested by

no test coverage detected