public GameSnapshotEntityRemoveResult RemoveEntity(IEntity entity) { if (GlobalEntity == entity) { return(GameSnapshotEntityRemoveResult.Failed); } for (int i = 0; i < AddedEntities.Count; ++i) { if (entity.UniqueId == AddedEntities[i].UniqueId) { AddedEntities.RemoveAt(i); return(GameSnapshotEntityRemoveResult.Destroyed); } } for (int i = 0; i < ActiveEntities.Count; ++i) { if (entity.UniqueId == ActiveEntities[i].UniqueId) { IEntity removed = ActiveEntities[i]; ActiveEntities.RemoveAt(i); RemovedEntities.Add(removed); return(GameSnapshotEntityRemoveResult.IntoRemoved); } } foreach (IEntity removed in RemovedEntities) { if (entity.UniqueId == removed.UniqueId) { return(GameSnapshotEntityRemoveResult.Failed); } } throw new InvalidOperationException("Unable to find entity with UniqueId = " + entity.UniqueId); }