diff --git a/GlitchyEngine/src/Scripting/ScriptGlue.bf b/GlitchyEngine/src/Scripting/ScriptGlue.bf index d0e1d03..69c50cf 100644 --- a/GlitchyEngine/src/Scripting/ScriptGlue.bf +++ b/GlitchyEngine/src/Scripting/ScriptGlue.bf @@ -253,9 +253,9 @@ static class ScriptGlue } [RegisterCall("ScriptGlue::Entity_GetScriptInstance")] - static MonoObject* Entity_GetScriptInstance(UUID entityId) + static void Entity_GetScriptInstance(UUID entityId, out MonoObject* instance) { - return ScriptEngine.GetManagedInstance(entityId); + instance = ScriptEngine.GetManagedInstance(entityId); } [RegisterCall("ScriptGlue::Entity_SetScript")] diff --git a/ScriptCore/Entity.cs b/ScriptCore/Entity.cs index 3dcf2a5..6e0763e 100644 --- a/ScriptCore/Entity.cs +++ b/ScriptCore/Entity.cs @@ -50,10 +50,7 @@ public class Entity : EngineObject /// Creates an instance that represents the Entity with the given id. /// /// The ID of the entity that belongs to this instance. - internal Entity(UUID uuid) - { - _uuid = uuid; - } + internal Entity(UUID uuid) : base(uuid) { } [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool HasComponent() => HasComponent(typeof(T)); @@ -268,7 +265,7 @@ public class Entity : EngineObject /// The type of the script. public bool Is() where T : Entity { - object scriptInstance = ScriptGlue.Entity_GetScriptInstance(_uuid); + ScriptGlue.Entity_GetScriptInstance(_uuid, out object scriptInstance); return scriptInstance is T; } @@ -280,7 +277,7 @@ public class Entity : EngineObject /// The script instance or null. public T As() where T : Entity { - object scriptInstance = ScriptGlue.Entity_GetScriptInstance(_uuid); + ScriptGlue.Entity_GetScriptInstance(_uuid, out object scriptInstance); return scriptInstance as T; } diff --git a/ScriptCore/ScriptGlue.cs b/ScriptCore/ScriptGlue.cs index 7bd7226..aa15ebd 100644 --- a/ScriptCore/ScriptGlue.cs +++ b/ScriptCore/ScriptGlue.cs @@ -37,7 +37,7 @@ internal static class ScriptGlue internal static extern void Entity_FindEntityWithName(string name, out UUID uuid); [MethodImpl(MethodImplOptions.InternalCall)] - internal static extern object Entity_GetScriptInstance(UUID entityId); + internal static extern void Entity_GetScriptInstance(UUID entityId, out object instance); [MethodImpl(MethodImplOptions.InternalCall)] internal static extern object Entity_SetScript(UUID entityId, Type scriptType);