/// <summary> /// Called with `true` when the page is active on the monitor, called with /// `false` when the page is no longer active. /// </summary> /// <param name="enable">true when the page is actively displayed, false when the page /// is no longer displayed.</param> public override void SetPageActive(bool enable) { pageEnabled = enable; if (activeCamera != null) { if (enable) { activeCamera.UpdateFlightComputer(comp); activeCamera.renderCallback += ReadCamera; } else { activeCamera.renderCallback -= ReadCamera; } } variableRegistrar.EnableCallbacks(enable); }
/// <summary> /// Callback used to select active cameras /// </summary> private void CameraSelectCallback(double dontCare) { try { // This can return null at startup when the VC hasn't had a chance // to run. Unfortunately, that means we have to call this callback // every time the camera should be enabled. MASCamera newCamera = comp.vc.FindCameraModule(cameraSelector.AsString()); if (activeCamera != null) { activeCamera.renderCallback -= ReadCamera; } activeCamera = newCamera; if (activeCamera != null) { if (pageEnabled) { activeCamera.UpdateFlightComputer(comp); activeCamera.renderCallback += ReadCamera; } } else if (!coroutineActive) { comp.StartCoroutine(CameraSelectCoroutine()); } if (activeCamera == null) { ApplyMissingCamera(); } } catch { if (activeCamera != null) { activeCamera.renderCallback -= ReadCamera; } activeCamera = null; } }