Post-merge tweaks for #1312
This commit is contained in:
@@ -2127,13 +2127,42 @@ const Array<MObject*>& MProperty::GetAttributes() const
|
||||
return _attributes;
|
||||
}
|
||||
|
||||
void MCore::ScriptingObject::SetInternalValues(MObject* object, void* unmanagedPtr, const Guid* id)
|
||||
void MCore::ScriptingObject::SetInternalValues(MClass* klass, MObject* object, void* unmanagedPtr, const Guid* id)
|
||||
{
|
||||
// Set handle to unmanaged object
|
||||
const MField* monoUnmanagedPtrField = klass->GetField("__unmanagedPtr");
|
||||
if (monoUnmanagedPtrField)
|
||||
{
|
||||
const void* param = unmanagedPtr;
|
||||
monoUnmanagedPtrField->SetValue(managedInstance, ¶m);
|
||||
}
|
||||
if (id != nullptr)
|
||||
{
|
||||
// Set object id
|
||||
const MField* monoIdField = klass->GetField("__internalId");
|
||||
if (monoIdField)
|
||||
{
|
||||
monoIdField->SetValue(managedInstance, (void*)id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MObject* MCore::ScriptingObject::CreateScriptingObject(MClass* klass, void* unmanagedPtr, const Guid* id)
|
||||
{
|
||||
return nullptr;
|
||||
// Ensure to have managed domain attached (this can be called from custom native thread, eg. content loader)
|
||||
MCore::Thread::Attach();
|
||||
|
||||
// Allocate managed instance
|
||||
MObject* managedInstance = MCore::Object::New(klass);
|
||||
if (managedInstance)
|
||||
{
|
||||
// Set unmanaged object handle and id
|
||||
MCore::ScriptingObject::SetInternalValues(klass, managedInstance, unmanagedPtr, _id);
|
||||
|
||||
// Initialize managed instance (calls constructor)
|
||||
MCore::Object::Init(managedInstance);
|
||||
}
|
||||
return managedInstance;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user