Skip to content

Commit ec3b136

Browse files
committed
fix: prevent counting unchanged refs after encodeAll
1 parent b87ba50 commit ec3b136

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

Assets/Plugins/Colyseus/Serializer/Schema/ReferenceTracker.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class ReferenceTracker
1313

1414
public ReferenceTracker() {}
1515

16-
public void Add(int refId, IRef _ref)
16+
public void Add(int refId, IRef _ref, bool incrementCount = true)
1717
{
1818
int previousCount;
1919

@@ -26,7 +26,10 @@ public void Add(int refId, IRef _ref)
2626
previousCount = refCounts[refId];
2727
}
2828

29-
refCounts[refId] = previousCount + 1;
29+
if (incrementCount)
30+
{
31+
refCounts[refId] = previousCount + 1;
32+
}
3033
}
3134

3235
public IRef Get(int refId)

Assets/Plugins/Colyseus/Serializer/Schema/Schema.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -365,10 +365,7 @@ public void Decode(byte[] bytes, Iterator it = null, ReferenceTracker refs = nul
365365
}
366366
}
367367

368-
if (value != previousValue)
369-
{
370-
refs.Add(refId, (IRef)value);
371-
}
368+
refs.Add(refId, (IRef)value, (value != previousValue));
372369
}
373370
}
374371
else if (childType == null)
@@ -420,10 +417,7 @@ public void Decode(byte[] bytes, Iterator it = null, ReferenceTracker refs = nul
420417
}
421418
}
422419

423-
if (valueRef != previousValue)
424-
{
425-
refs.Add(refId, (IRef)value);
426-
}
420+
refs.Add(refId, (IRef)value, (valueRef != previousValue));
427421
}
428422

429423
bool hasChange = (previousValue != value);

0 commit comments

Comments
 (0)