chore: universe serializer filters in only the root universe objects

This commit is contained in:
Syntriax 2025-04-28 23:15:46 +03:00
parent fa3a4d1e0d
commit efe51b491d

View File

@ -58,6 +58,17 @@ public class UniverseSerializer : IEngineTypeYamlSerializer
{
IUniverse universe = (IUniverse)value!;
IEnumerable<IUniverseObject> rootUniverseObjects = universe.UniverseObjects
.Select(uo =>
{
IUniverseObject root = uo;
while (root.Parent is IUniverseObject parent)
root = parent;
return root;
})
.Where(uo => !uo.GetType().HasAttribute<IgnoreSerializationAttribute>())
.Distinct();
emitter.Emit(new MappingStart());
emitter.Emit(new Scalar(nameof(IUniverse.Id)));
@ -70,7 +81,7 @@ public class UniverseSerializer : IEngineTypeYamlSerializer
serializer(universe.StateEnable);
emitter.Emit(new Scalar(nameof(IUniverse.UniverseObjects)));
serializer(universe.UniverseObjects.Where(uo => !uo.GetType().HasAttribute<IgnoreSerializationAttribute>()));
serializer(rootUniverseObjects);
emitter.Emit(new MappingEnd());
}