예제 #1
0
        internal void ApplyDiff(ViewDiff diff)
        {
            var entitiesAdded = diff.GetEntitiesAdded();

            foreach (var entity in entitiesAdded)
            {
                entities.Add(entity);
            }

            var entitiesRemoved = diff.GetEntitiesRemoved();

            foreach (var entity in entitiesRemoved)
            {
                entities.Remove(entity);
            }

            foreach (var storage in viewStorages)
            {
                storage.ApplyDiff(diff);
            }

            foreach (var pair in diff.GetWorkerFlagChanges())
            {
                workerFlags[pair.Item1] = pair.Item2;
            }
        }
예제 #2
0
        internal void ApplyDiff(ViewDiff diff)
        {
            using (applyDiffMarker.Auto())
            {
                if (diff.Disconnected)
                {
                    OnDisconnect(diff.DisconnectMessage);
                    return;
                }

                foreach (var entityId in diff.GetEntitiesAdded())
                {
                    AddEntity(entityId);
                }

                foreach (var manager in managers)
                {
                    manager.ApplyDiff(diff);
                }

                foreach (var entityId in diff.GetEntitiesRemoved())
                {
                    RemoveEntity(entityId);
                }
            }
        }
예제 #3
0
        internal void ApplyDiff(ViewDiff diff)
        {
            entitiesAdded.Clear();
            entitiesRemoved.Clear();

            // todo decide on a container and remove this
            foreach (var entityId in diff.GetEntitiesAdded())
            {
                entitiesAdded.Add(entityId);
            }

            foreach (var entityId in diff.GetEntitiesRemoved())
            {
                entitiesRemoved.Add(entityId);
            }
        }
예제 #4
0
파일: View.cs 프로젝트: ht290/gdk-for-unity
        internal void ApplyDiff(ViewDiff diff)
        {
            var entitiesAdded = diff.GetEntitiesAdded();

            foreach (var entity in entitiesAdded)
            {
                entities.Add(entity);
            }

            var entitiesRemoved = diff.GetEntitiesRemoved();

            foreach (var entity in entitiesRemoved)
            {
                entities.Remove(entity);
            }

            foreach (var storage in viewStorages)
            {
                storage.ApplyDiff(diff);
            }
        }
예제 #5
0
        internal void ApplyDiff(ViewDiff diff)
        {
            using (applyDiffMarker.Auto())
            {
                entitiesAdded.Clear();
                entitiesRemoved.Clear();

                // todo decide on a container and remove this
                foreach (var entityId in diff.GetEntitiesAdded())
                {
                    entitiesAdded.Add(entityId);
                }

                foreach (var entityId in diff.GetEntitiesRemoved())
                {
                    entitiesRemoved.Add(entityId);
                }

                if (entitiesAdded.Count != 0 || entitiesRemoved.Count != 0)
                {
                    ViewVersion += 1;
                }
            }
        }