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
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -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, ); }
|
||||
|
||||
Reference in New Issue
Block a user