private void EndProcessing() { if (mTimeUpObject) { mTimeUpObject.SetActive(true); } if (GetComponent <FanControll>().enabled == true) { FanStaticController.ChangeAirFlowStatic(FanPower.END); } var next = new Subject <Unit>(); Observable.Timer(System.TimeSpan.FromSeconds(mIntervalTime)) .TakeUntil(this.OnDisableAsObservable()) .Subscribe(_ => { if (mTimeUpObject) { mTimeUpObject.SetActive(false); } next.OnNext(Unit.Default); }); next .TakeUntil(this.OnDisableAsObservable()) .Subscribe(async _ => await mScene.NextSceneAsync()); }
// Use this for initialization private void OnEnable() { var carData = FindObjectOfType <DataUiCarModel>(); var fan = new FanManager(mLowSpeed, mMiddleSpeed, mHighSpeed); var state = FindObjectOfType <GameStateManager>(); if (state) { var scene = FindObjectOfType <GameSceneManager>(); if (scene.SceneState != SceneState.GAME) { return; } var start = state.CurrentGameState .Where(x => x == mFanStartState) .TakeUntil(this.OnDisableAsObservable()); start .Subscribe(_ => FanStaticController.ChangeAirFlowStatic(FanPower.START)); var end = state.CurrentGameState .Where(x => x == mFanEndState) .TakeUntil(this.OnDisableAsObservable()); end .Subscribe(_ => FanStaticController.ChangeAirFlowStatic(FanPower.END)); fan.GetProcess(); Observable.Interval(System.TimeSpan.FromSeconds(2)) .SkipUntil(start) .TakeUntil(end) .Where(_ => carData.CurrentGear.Value != GearState.REVERSE) .Subscribe(_ => fan.ChangeAirFlow(carData.CurrentSpeed.Value)); } else { fan.GetProcess(); Observable.Interval(System.TimeSpan.FromSeconds(2)) .TakeUntil(this.OnDisableAsObservable()) .Where(_ => carData.CurrentGear.Value != GearState.REVERSE) .Subscribe(_ => fan.ChangeAirFlow(carData.CurrentSpeed.Value)); } }