/// <summary> /// Force the window to update arcording to its current state /// </summary> /// <param name="instant">Should the state change be instant</param> /// <param name="ignoreState">Should the change ignore the state and display the window as active and in focus</param> public virtual void StateTransition(bool instant, bool ignoreState) { if (!_windowInteractable && !ignoreState) { switch (_transitionState) { case TransitionStates.Colors: _targetGraphics.CrossFadeColor(_colors.disabledColor, instant ? 0f : _colors.fadeDuration, true, true); break; case TransitionStates.Sprites: _targetGraphics.overrideSprite = _sprites.disabledSprite; break; case TransitionStates.Both: _targetGraphics.CrossFadeColor(_colors.disabledColor, instant ? 0f : _colors.fadeDuration, true, true); _targetGraphics.overrideSprite = _sprites.disabledSprite; break; default: _targetGraphics.CrossFadeColor(_colors.disabledColor, instant ? 0f : _colors.fadeDuration, true, true); break; } } else if (ignoreState || isFocused) { switch (_transitionState) { case TransitionStates.Colors: _targetGraphics.CrossFadeColor(_colors.focusedColor, instant ? 0f : _colors.fadeDuration, true, true); break; case TransitionStates.Sprites: _targetGraphics.overrideSprite = _sprites.focusedSprite; break; case TransitionStates.Both: _targetGraphics.CrossFadeColor(_colors.focusedColor, instant ? 0f : _colors.fadeDuration, true, true); _targetGraphics.overrideSprite = _sprites.focusedSprite; break; default: _targetGraphics.CrossFadeColor(_colors.focusedColor, instant ? 0f : _colors.fadeDuration, true, true); break; } } else { switch (_transitionState) { case TransitionStates.Colors: _targetGraphics.CrossFadeColor(_colors.unFocusedColor, instant ? 0f : _colors.fadeDuration, true, true); break; case TransitionStates.Sprites: _targetGraphics.overrideSprite = _sprites.unFocusedSprite; break; case TransitionStates.Both: _targetGraphics.CrossFadeColor(_colors.unFocusedColor, instant ? 0f : _colors.fadeDuration, true, true); _targetGraphics.overrideSprite = _sprites.unFocusedSprite; break; default: _targetGraphics.CrossFadeColor(_colors.unFocusedColor, instant ? 0f : _colors.fadeDuration, true, true); break; } } }