private void Start() { BuildPool(); prepare = new ReactiveCommand(); prepare.Delay(TimeSpan.FromSeconds(nextSpawnTime)) .Subscribe(_ => PrepareNextObject()) .AddTo(this); NextObject(); }
public MainWindowViewModel() { _disposables = new CompositeDisposable(); _connectionDisposables = new CompositeDisposable(); VideoPlayer = new VideoPlayerModel().AddTo(_disposables); ConnectedDevice = new DeviceModel(); SelectDeviceCommand = new ReactiveCommand().AddTo(_disposables); SelectDeviceCommand.Delay(new TimeSpan(100)).ObserveOnUIDispatcher().SelectMany(_ => DialogHost.Show(new DeviceSelectDialog(), OnSelectDeviceDialogClosing).ToObservable()) .Subscribe(async(result) => await ConnenctDevice(result as DiscoverResult)).AddTo(_disposables); _viewMode = new BehaviorSubject <ViewMode>(ViewMode.None).AddTo(_disposables); IsModeRec = new ReactiveProperty <bool>().AddTo(_disposables); IsModeLive = new ReactiveProperty <bool>().AddTo(_disposables); IsModeInput = new ReactiveProperty <bool>().AddTo(_disposables); IsModeOutput = new ReactiveProperty <bool>().AddTo(_disposables); _viewMode.DistinctUntilChanged().Subscribe(m => { IsModeRec.Value = (m == ViewMode.Rec); IsModeLive.Value = (m == ViewMode.Live); IsModeInput.Value = (m == ViewMode.Input); IsModeOutput.Value = (m == ViewMode.Output); }).AddTo(_disposables); IsModeRec.Where(b => b).Subscribe(async(_) => await ToRecMode()).AddTo(_disposables); IsModeLive.Where(b => b).Subscribe(async(_) => await ToLiveMode()).AddTo(_disposables); IsModeInput.Where(b => b).Subscribe(async(_) => await ToInputMode()).AddTo(_disposables); IsModeOutput.Where(b => b).Subscribe(async(_) => await ToOutputMode()).AddTo(_disposables); _viewMode.OnNext(ViewMode.Output); SliderValue = new[] { new ReactiveProperty <double>(1.0).AddTo(_disposables), new ReactiveProperty <double>(0.0).AddTo(_disposables), new ReactiveProperty <double>(0.0).AddTo(_disposables), new ReactiveProperty <double>(0.0).AddTo(_disposables) }; SliderMaximum = new ReactiveProperty <double>(1.0).AddTo(_disposables); IsSliderActive = new[] { new ReactiveProperty <bool>(true).AddTo(_disposables), new ReactiveProperty <bool>(false).AddTo(_disposables), new ReactiveProperty <bool>(false).AddTo(_disposables), new ReactiveProperty <bool>(false).AddTo(_disposables) }; SliderValue[0].Subscribe(async(value) => await OnSliderValueChanged(0, value)).AddTo(_disposables); SliderValue[1].Subscribe(async(value) => await OnSliderValueChanged(1, value)).AddTo(_disposables); SliderValue[2].Subscribe(async(value) => await OnSliderValueChanged(2, value)).AddTo(_disposables); SliderValue[3].Subscribe(async(value) => await OnSliderValueChanged(3, value)).AddTo(_disposables); }