/// <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(); }
public void UpdateLeiaState() { _leiaState.UpdateState(Decorators, LeiaDevice); // if not dirty, and state matches backlight, then we are ready to trigger StateChanged callback bool matchedState = !_isDirty && ((LeiaStateId == HPO && _leiaState.GetBacklightMode() == 3) || (LeiaStateId != HPO && _leiaState.GetBacklightMode() != 3)); if (matchedState && StateChanged != null) { StateChanged(); } }