private void Awake() { if (LightSwitchPoint._commandRefreshEvent == null) { LightSwitchPoint._commandRefreshEvent = new Subject <Unit>(); ObservableExtensions.Subscribe <IList <Unit> >(Observable.Where <IList <Unit> >(Observable.TakeUntilDestroy <IList <Unit> >((IObservable <M0>)Observable.Buffer <Unit, Unit>((IObservable <M0>)LightSwitchPoint._commandRefreshEvent, (IObservable <M1>)Observable.ThrottleFrame <Unit>((IObservable <M0>)LightSwitchPoint._commandRefreshEvent, 1, (FrameCountType)0)), (Component)Singleton <Manager.Map> .Instance), (Func <M0, bool>)(_ => !_.IsNullOrEmpty <Unit>())), (Action <M0>)(_ => { CommandArea commandArea = Manager.Map.GetCommandArea(); if (Object.op_Equality((Object)commandArea, (Object)null)) { return; } commandArea.RefreshCommands(); })); } if (this._linkMapObject) { LightSwitchData lightSwitchData = LightSwitchData.Get(this._linkID); if (Object.op_Inequality((Object)lightSwitchData, (Object)null)) { this._onModeObjects = lightSwitchData.OnModeObjects; this._offModeObjects = lightSwitchData.OffModeObjects; } } this.ActiveChange(this._firstLightEnable); }
protected override void OnDisable() { base.OnDisable(); CommandArea commandArea = (!Singleton <Manager.Map> .IsInstance() ? (PlayerActor)null : Singleton <Manager.Map> .Instance.Player)?.PlayerController?.CommandArea; if (Object.op_Equality((Object)commandArea, (Object)null)) { return; } bool flag = commandArea.ContainsConsiderationObject((ICommandable)this); if (!commandArea.ContainsCommandableObject((ICommandable)this)) { return; } commandArea.RemoveCommandableObject((ICommandable)this); if (!flag) { return; } commandArea.RefreshCommands(); }