/// <summary> /// Requests new state from current LeiaStateFactory, switches backlight, /// updates texture. UpdateLeiaState triggers StateChanged() actions. /// </summary> private void RequestLeiaStateUpdate() { if (!Application.isPlaying) { return; } if (_leiaState != null) { _leiaState.Release(); } // set interlacing state based on LeiaStateId _leiaState = _stateFactory.GetState(LeiaStateId); // Set backlight state based on LeiaStateId if (_leiaDevice != null && _leiaDevice.GetBacklightMode() == 3 && !LeiaStateId.Equals(HPO)) { _leiaDevice.SetBacklightMode(_leiaState.GetBacklightMode()); } if (_leiaDevice != null && _leiaDevice.GetBacklightMode() != 3 && LeiaStateId.Equals(HPO)) { _leiaDevice.SetBacklightMode(_leiaState.GetBacklightMode()); } if (_leiaDevice.GetBacklightMode() == 3) { latest3DFrame = Time.frameCount; } // private member RequestLeiaStateUpdate() calls public member UpdateLeiaState // UpdateLeiaState is called by LeiaConfigSettingsUI UpdateLeiaState(); }
/// <summary> /// When in 2D, forces HPO then back to 2D /// When in HPO, forces 2D then back to HPO /// /// Skips backlight switching. /// /// This method resolves a specific issue with orthographic / perspective cameras. External users should use /// DesiredLeiaStateId = ... /// </summary> public void ForceLeiaStateUpdate() { string init = LeiaStateId; string conj = (LeiaStateId == HPO ? TWO_D : HPO); Settings.LeiaStateId = conj; _leiaState = _stateFactory.GetState(LeiaStateId); UpdateLeiaState(); Settings.LeiaStateId = init; _leiaState = _stateFactory.GetState(LeiaStateId); UpdateLeiaState(); }