void IFiltersList.FireOnPropertiesChanged(IFilter sender, bool changeAffectsFilterResult, bool changeAffectsPreprocessingResult) { OnPropertiesChanged?.Invoke(sender, new FilterChangeEventArgs(changeAffectsFilterResult, changeAffectsPreprocessingResult)); if (changeAffectsFilterResult) { ++filtersVersion; changeNotification?.Post(); } }
private void OnPropertyValueChanged() { HaveChanged = false; foreach (var property in properties) { HaveChanged |= property.HasChanged; } OnPropertiesChanged?.Invoke(); }
private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { switch (e.PropertyName) { case "Shuffle": OnPropertiesChanged?.Invoke(PropertyChanges.ForProperty("Shuffle", viewModel.Player.Queue.Shuffle)); break; case "Volume": OnPropertiesChanged?.Invoke(PropertyChanges.ForProperty("Volume", (double)viewModel.Player.Volume)); break; case "Paused": OnPropertiesChanged?.Invoke(PropertyChanges.ForProperty("PlaybackStatus", viewModel.Paused switch { true => "Paused", false => "Playing" })); break; }
public Task SetAsync(string prop, object val) { _properties[prop] = val; OnPropertiesChanged?.Invoke(PropertyChanges.ForProperty(prop, val)); return(Task.CompletedTask); }
private void Player_SongStopped(object sender, EventArgs e) { OnPropertiesChanged?.Invoke(PropertyChanges.ForProperty("PlaybackStatus", "Stopped")); }
/// <summary> /// Updates the local copy of the global state via server delta /// </summary> /// <param name="serverUpdate">changes to the global state since last server tick</param> private void UpdateLocalState(StateUpdate serverUpdate) { RoomStateGen newRoomState = new RoomStateGen(globalState); #region properties update bool propsChanged = false; bool isSceneUpdate = false; if (!string.IsNullOrEmpty(serverUpdate.SiteDrive)) { propsChanged = true; isSceneUpdate = true; } else { if (serverUpdate.AnnotationsLength > 0) { propsChanged = true; } if (serverUpdate.Poi.HasValue) { propsChanged = true; } } if (propsChanged) { if (isSceneUpdate) { if (OnPropertiesChanged != null) { OnPropertiesChanged.Invoke(this, serverUpdate); } } else { serverUpdate.Debounce(this, props => { if (OnPropertiesChanged != null) { OnPropertiesChanged.Invoke(this, props); } }, isSceneUpdate); } } #endregion if (serverUpdate.DeleteLength > 0) //delete these object ids from the global state { print("Deleting " + serverUpdate.DeleteLength + " objects"); for (int i = 0; i < serverUpdate.DeleteLength; i++) { if (newRoomState.objects.All(tr => tr.id != serverUpdate.Delete(i))) { print("object to delete not found in global state " + serverUpdate.Delete(i)); continue; } newRoomState.objects.Remove(globalState.objects.Single(o => o.id == serverUpdate.Delete(i))); if (trackers.ContainsKey(serverUpdate.Delete(i)) && trackers[serverUpdate.Delete(i)] != null) { Destroy(((MonoBehaviour)trackers[serverUpdate.Delete(i)]).gameObject); } else { print("Could not find game object to destroy" + serverUpdate.Delete(i)); } } } if (serverUpdate.CreateLength > 0) //create these objects and add them to the global state { for (int i = 0; i < serverUpdate.CreateLength; i++) { if (!serverUpdate.Create(i).HasValue) { print("Malformed create message"); continue; } if (!trackers.ContainsKey(serverUpdate.Create(i).Value.Id)) { CreateObject(serverUpdate.Create(i).Value, newRoomState); //if (newRoomState.objects.Contains(serverUpdate.Create(i).Value)) //continue; } else { print("Object " + serverUpdate.Create(i).Value.Id + " already exists"); } //else //{ // if (newRoomState.objects.Any(tr => tr.id == serverUpdate.Create(i).Value.Id)) // newRoomState.objects.Remove(newRoomState.objects.Single(o => o.id == serverUpdate.Create(i).Value.Id)); // var oldObj = (MonoBehaviour) trackers[serverUpdate.Create(i).Value.Id]; // if (oldObj) Destroy(oldObj.gameObject); // trackers.Remove(serverUpdate.Create(i).Value.Id); //} //CreateObject(serverUpdate.Create(i).Value, newRoomState); } } if (serverUpdate.UpdateLength > 0) { for (int i = 0; i < serverUpdate.UpdateLength; i++) { if (!serverUpdate.Update(i).HasValue) { continue; } if (!trackers.ContainsKey(serverUpdate.Update(i).Value.Id)) { Debug.Log("Object created from update. please use the create function instead"); //CreateObject(serverUpdate.Update(i).Value, newRoomState); continue; } trackers[serverUpdate.Update(i).Value.Id].UpdateFromRoomObject(serverUpdate.Update(i).Value); } } oldStateGen = new RoomStateGen(globalState); globalState = newRoomState; }
protected void InvokeOnPropertiesChanged() => OnPropertiesChanged?.Invoke();