Beispiel #1
0
        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);
        }