DeerEngine/Deer/src/DeerCore/ScriptSystem/ScriptEnvironment.cpp

33 lines
889 B
C++

#pragma once
#include "DeerCore/Log.h"
#include "DeerCore/ScriptSystem.h"
#include "angelscript.h"
namespace Deer {
namespace ScriptSystem {
extern asIScriptEngine* scriptEngine;
}
Scope<ScriptEnvironment> ScriptSystem::createScriptEnvironment(const char* baseTypeName) {
asITypeInfo* baseType = scriptEngine->GetTypeInfoByDecl(baseTypeName);
if (!baseType) {
DEER_CORE_ERROR("Base type {} not found", baseTypeName);
return nullptr;
}
if (baseType->GetModule()) {
DEER_CORE_ERROR("Base type {} must be a engine type", baseTypeName);
return nullptr;
}
Scope<ScriptEnvironment> environment = MakeScope<ScriptEnvironment>(baseType);
return environment;
}
ScriptEnvironment::ScriptEnvironment(asITypeInfo* _baseType)
: baseType(_baseType), baseTypeName(_baseType->GetName()) {
ScriptSystem::scriptEngine->GetTypedefCount();
}
} // namespace Deer