Large cleanup of type registration, added new "NativeArray" (or narray in angelscript) type that simply holds a pointer to a native list, to prevent copies we don't need
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2021-09-25 17:56:31 +02:00
parent e5ea2bbc90
commit 8005ad1232
27 changed files with 329 additions and 410 deletions

View File

@@ -1,7 +1,6 @@
#include "AngelScriptScript.hpp"
#include "AngelScriptFunctionCall.hpp"
#include "AngelScriptResolver.hpp"
#include "AngelscriptUserdata.hpp"
#define CALL_HOOK(name, setup) \
auto s = _type->Get##name(); \
@@ -11,23 +10,16 @@
s.Function, _ctxPool, _obj, _resolver, GetName(), [&]([[maybe_unused]] asIScriptContext* ctx) { setup }, \
[&]([[maybe_unused]] asIScriptContext* ctx) {});
CScriptArray* AngelScriptScript::GetEffectParameters(const ArbUt::List<CreatureLib::Library::EffectParameter*>& ls) {
auto arr = _resolver->GetUserdata()->CreateArray("array<EffectParameter@>"_cnc, ls.Count());
for (size_t i = 0; i < ls.Count(); i++) {
arr->SetValue(i, (void**)&ls[i]);
}
return arr;
NativeArray<ArbUt::List<CreatureLib::Library::EffectParameter*>>*
AngelScriptScript::GetEffectParameters(const ArbUt::List<CreatureLib::Library::EffectParameter*>& ls) {
return new NativeArray<ArbUt::List<CreatureLib::Library::EffectParameter*>>(&ls);
}
void AngelScriptScript::OnInitialize(const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters) {
CScriptArray* arr = nullptr;
CALL_HOOK(OnInitialize, {
arr = GetEffectParameters(parameters);
auto arr = GetEffectParameters(parameters);
ctx->SetArgAddress(0, arr);
})
if (arr != nullptr) {
arr->Release();
}
}
void AngelScriptScript::Stack() { CALL_HOOK(Stack, ); }
void AngelScriptScript::OnRemove() { CALL_HOOK(OnRemove, ); }