Adds caching for expensive type resolution.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
#include "AngelScriptScript.hpp"
|
||||
#include "AngelScriptFunctionCall.hpp"
|
||||
#include "AngelScriptResolver.hpp"
|
||||
#include "AngelscriptUserdata.hpp"
|
||||
|
||||
#define CALL_HOOK(name, setup) \
|
||||
auto s = _type->Get##name(); \
|
||||
if (!s.Exists) \
|
||||
return; \
|
||||
AngelScriptUtils::AngelscriptFunctionCall( \
|
||||
s.Function, _ctxPool, _obj, GetName(), [&]([[maybe_unused]] asIScriptContext* ctx) { setup }, \
|
||||
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) {
|
||||
asITypeInfo* t = _resolver->GetBaseType("array<EffectParameter@>"_cnc);
|
||||
CScriptArray* arr = CScriptArray::Create(t, ls.Count());
|
||||
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]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user