diff --git a/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs b/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs index ba89c8a695..85364fe5f4 100644 --- a/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs +++ b/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs @@ -62,41 +62,18 @@ namespace Content.Shared.Decals dictionary = serializationManager.Read>(node, hookCtx, context, notNullableOverride: true); } - var uids = new SortedSet(); - var uidChunkMap = new Dictionary(); - var allIndices = dictionary.Keys.ToList(); - allIndices.Sort((x, y) => x.X == y.X ? x.Y.CompareTo(y.Y) : x.X.CompareTo(y.X)); + uint nextIndex = 0; - foreach (var indices in allIndices) + foreach (var decals in dictionary.Values) { - var decals = dictionary[indices]; - var decalUids = decals.Decals.Keys.ToList(); - decalUids.Sort(); - - foreach (var uid in decalUids) + foreach (var uid in decals.Decals.Keys) { - uids.Add(uid); - uidChunkMap[uid] = indices; + nextIndex = Math.Max(uid, nextIndex); } } - var uidMap = new Dictionary(); - uint nextIndex = 0; - foreach (var uid in uids) - { - uidMap[uid] = nextIndex++; - } - - var newDict = new Dictionary(); - foreach (var (oldUid, newUid) in uidMap) - { - var indices = uidChunkMap[oldUid]; - if(!newDict.ContainsKey(indices)) - newDict[indices] = new(); - newDict[indices].Decals[newUid] = dictionary[indices].Decals[oldUid]; - } - - return new DecalGridChunkCollection(newDict) { NextDecalId = nextIndex }; + nextIndex++; + return new DecalGridChunkCollection(dictionary) { NextDecalId = nextIndex }; } public DataNode Write(ISerializationManager serializationManager, @@ -109,8 +86,6 @@ namespace Content.Shared.Decals var allData = new MappingDataNode(); // Want consistent chunk + decal ordering so diffs aren't mangled - var chunks = new List(value.ChunkCollection.Keys); - chunks.Sort((x, y) => x.X == y.X ? x.Y.CompareTo(y.Y) : x.X.CompareTo(y.X)); var nodes = new SequenceDataNode(); // Assuming decal indices stay consistent: @@ -122,9 +97,6 @@ namespace Content.Shared.Decals // Build all of the decal lookups first. foreach (var chunk in value.ChunkCollection.Values) { - var sortedDecals = new List(chunk.Decals.Keys); - sortedDecals.Sort(); - foreach (var (uid, decal) in chunk.Decals) { var data = new DecalData(decal);