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; } }
/// <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; } }