Serialization: Support sharing object references

This commit is contained in:
Simon Lübeß
2024-04-13 00:50:09 +02:00
parent 949ab4ebb0
commit a3de5ddc9c
5 changed files with 142 additions and 36 deletions
@@ -24,6 +24,12 @@ public class ScriptInstanceSerializer
public void Clear()
{
ClearDictionaryAndDeleteValues!(_serializedData);
ScriptEngine.Classes.EntitySerializer.DestroySerializationContext(this);
}
public void Init()
{
ScriptEngine.Classes.EntitySerializer.CreateSerializationContext(this);
}
/// Serializes all script instances that are currently managed by the ScriptEngine.
@@ -31,6 +37,8 @@ public class ScriptInstanceSerializer
{
Debug.Profiler.ProfileFunction!();
Init();
for (let (id, scriptInstance) in ScriptEngine._entityScriptInstances)
{
SerializeScriptInstance(scriptInstance);
@@ -61,6 +69,8 @@ public class ScriptInstanceSerializer
{
Debug.Profiler.ProfileFunction!();
Init();
for (let (id, script) in ScriptEngine._entityScriptInstances)
{
DeserializeScriptInstance(id, script);