No longer lose script instances (and type names) when reloading assemblies

This commit is contained in:
Simon Lübeß
2026-10-23 23:31:06 +02:00
parent fa3f734341
commit ed94213435
+6 -14
View File
@@ -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();
if (retainScriptData)
{
if (Context != null)
{
Debug.Profiler.ProfileScope!("Initialize Instances");
// We need to create a new instance for every entity
for (let (id, scriptInstance) in _entityScriptInstances)
for (let (ecsEntity, scriptComponent) in Context.GetEntities<ScriptComponent>())
{
if (Context.GetEntityByID(id) case .Ok(let entity))
{
ScriptComponent* script = entity.GetComponent<ScriptComponent>();
InitializeInstance(entity, script);
}
else
{
Log.EngineLogger.AssertDebug(false, "Entities script was just serialized but the entity doesn't exist anymore.");
}
InitializeInstance(Entity(ecsEntity, Context), scriptComponent);
}
}
if (retainScriptData)
{
contextSerializer.DeserializeScriptInstances();
}