So, I’m trying to expose some simple methods via Angelscript in one of my projects. The basic logistics of hooking up the script stuff is all working great. For instance, as a sanity check, the following method is exposed properly and runs as you would expect:
void AppAPI::LoadModel(String path)
{
URHO3D_LOGINFO("hello");
}
When I try to actually do something in that same function (see below), I get an access violation error:
void AppAPI::LoadModel(String path)
{
GetScene()->CreateChild("TestNode");
}
The actual error is:
“The thread tried to read from or write to an address for which it does not have the appropriate access”
Here is my little API class in its entirety:
#include "AppAPI.h"
#include "AppConsole.h"
#include <Urho3D/Script/APITemplates.h>
AppAPI* AppAPI::instance_;
AppAPI::AppAPI(Context* context): Component(context)
{
instance_ = this;
//scene_ = GetScene();
AppAPI::RegisterObject(context);
}
AppAPI::~AppAPI()
{
}
void AppAPI::RegisterObject(Context* context)
{
asIScriptEngine* engine = AppConsole::instance_->script_engine_->GetScriptEngine();
RegisterComponent<AppAPI>(engine, "AppAPI");
engine->RegisterObjectMethod("AppAPI", "void LoadModel(String)", asMETHOD(AppAPI, LoadModel), asCALL_THISCALL);
engine->RegisterGlobalProperty("AppAPI @api", instance_);
//engine->RegisterObjectProperty("AppAPI", "Scene@ scene", offsetof(AppAPI, scene_));
}
void AppAPI::LoadModel(String path)
{
GetScene()->CreateChild("TestNode");
}
Any thoughts?