Skip to content

Commit b87ba50

Browse files
committed
trigger delete callbacks when collection is replaced
1 parent 7bdad84 commit b87ba50

File tree

1 file changed

+15
-19
lines changed
  • Assets/Plugins/Colyseus/Serializer/Schema

1 file changed

+15
-19
lines changed

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

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -402,25 +402,21 @@ public void Decode(byte[] bytes, Iterator it = null, ReferenceTracker refs = nul
402402
{
403403
refs.Remove(((IRef)previousValue).__refId);
404404

405-
////
406-
//// TODO: Trigger onRemove if structure has been replaced.
407-
////
408-
//const deletes: DataChange[] = [];
409-
//const entries: IterableIterator <[any, any] > = previousValue.entries();
410-
//let iter: IteratorResult <[any, any] >;
411-
//while ((iter = entries.next()) && !iter.done)
412-
//{
413-
// const [key, value] = iter.value;
414-
// deletes.push({
415-
// op: OPERATION.DELETE,
416-
// field: key,
417-
// // dynamicIndex,
418-
// value: undefined,
419-
// previousValue: value,
420-
// });
421-
//}
422-
423-
//allChanges.set(previousValue['$changes'].refId, deletes);
405+
var deletes = new List<DataChange>();
406+
var items = ((ISchemaCollection)previousValue).GetItems();
407+
408+
foreach (var key in items.Keys)
409+
{
410+
deletes.Add(new DataChange()
411+
{
412+
DynamicIndex = key,
413+
Op = (byte)OPERATION.DELETE,
414+
Value = null,
415+
PreviousValue = items[key]
416+
});
417+
}
418+
419+
allChanges[(object)((IRef)previousValue).__refId] = deletes;
424420
}
425421
}
426422

0 commit comments

Comments
 (0)