From ed94213435aa1d4bf676201de66ebdad55347083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Fri, 23 Oct 2026 23:31:06 +0200 Subject: [PATCH] No longer lose script instances (and type names) when reloading assemblies --- GlitchyEngine/src/Scripting/ScriptEngine.bf | 30 ++++++++------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/GlitchyEngine/src/Scripting/ScriptEngine.bf b/GlitchyEngine/src/Scripting/ScriptEngine.bf index a70abff..b2b2b4a 100644 --- a/GlitchyEngine/src/Scripting/ScriptEngine.bf +++ b/GlitchyEngine/src/Scripting/ScriptEngine.bf @@ -374,8 +374,6 @@ static class ScriptEngine if (script.Instance != null) script.Instance = null; - script.ScriptClassName = null; - DestroyInstance(entityId); } @@ -455,26 +453,20 @@ static class ScriptEngine LoadScriptAssemblies(); - { - Debug.Profiler.ProfileScope!("Initialize Instances"); - - // We need to create a new instance for every entity - for (let (id, scriptInstance) in _entityScriptInstances) - { - if (Context.GetEntityByID(id) case .Ok(let entity)) - { - ScriptComponent* script = entity.GetComponent(); - InitializeInstance(entity, script); - } - else - { - Log.EngineLogger.AssertDebug(false, "Entities script was just serialized but the entity doesn't exist anymore."); - } - } - } if (retainScriptData) { + if (Context != null) + { + Debug.Profiler.ProfileScope!("Initialize Instances"); + + // We need to create a new instance for every entity + for (let (ecsEntity, scriptComponent) in Context.GetEntities()) + { + InitializeInstance(Entity(ecsEntity, Context), scriptComponent); + } + } + contextSerializer.DeserializeScriptInstances(); }