예제 #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
        /// <summary>
        ///     Ticks the worker. Fetches all messages received since the last <see cref="Tick"/> call and
        ///     applies the diff.
        /// </summary>
        public void Tick()
        {
            ConnectionHandler.GetMessagesReceived(ref ViewDiff);

            // Update worker flags
            foreach (var(key, value) in ViewDiff.GetWorkerFlagChanges())
            {
                workerFlags[key] = value;
            }
        }