/// <summary> /// Try to find a CinemachineBrain to associate with a /// Cinemachine Virtual Camera. The first CinemachineBrain /// in which this Cinemachine Virtual Camera is live will be used. /// If none, then the first active CinemachineBrain will be used. /// Brains with OutputCamera == null will not be returned. /// Final result may be null. /// </summary> /// <param name="vcam">Virtual camera whose potential brain we need.</param> /// <returns>First CinemachineBrain found that might be /// appropriate for this vcam, or null</returns> public CinemachineBrain FindPotentialTargetBrain(ICinemachineCamera vcam) { int numBrains = BrainCount; if (vcam != null && numBrains > 1) { for (int i = 0; i < numBrains; ++i) { CinemachineBrain b = GetActiveBrain(i); if (b != null && b.OutputCamera != null && b.IsLive(vcam)) { return(b); } } } for (int i = 0; i < numBrains; ++i) { CinemachineBrain b = GetActiveBrain(i); if (b != null && b.OutputCamera != null) { return(b); } } return(null); }
IEnumerator <float> StartToggle(InputProperty _inputProperty) { yield return(Timing.WaitForOneFrame); while (brain.IsLive(enterCamera)) { yield return(Timing.WaitForOneFrame); if (_inputProperty.GetInputDown()) { break; } } DeactivateSwitchObjects(); ExitCamera(); }
private void OnCameraSwapEvent(CinemachineVirtualCamera vcam) { if (vcam != null) { if (!cinemachineBrain.IsLive(vcam)) { cinemachineBrain.ActiveVirtualCamera.Priority = 1; vcam.Priority = 100; } } // null indicates default camera. in our case the free look camera else if (vcam == null) { if (!cinemachineBrain.IsLive(freeLookVCam)) { cinemachineBrain.ActiveVirtualCamera.Priority = 1; freeLookVCam.Priority = 100; } } }
protected virtual void OnGUI() { // Draw the camera guides if (Target == null || !CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides) { return; } // If inspector is collapsed in the vcam editor, don't draw the guides if (!VcamStageEditor.ActiveEditorRegistry.IsActiveEditor(this)) { return; } // Don't draw the guides if rendering to texture var vcam = Target.VirtualCamera; CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(vcam); if (brain == null || (brain.OutputCamera.activeTexture != null && CinemachineCore.Instance.BrainCount > 1)) { return; } // Screen guides bool isLive = targets.Length <= 1 && brain.IsLive(vcam, true); m_ScreenGuideEditor.OnGUI_DrawGuides(isLive, brain.OutputCamera, Target.VcamState.Lens, true); // Draw an on-screen gizmo for the target if (Target.LookAtTarget != null && isLive) { Vector3 targetScreenPosition = brain.OutputCamera.WorldToScreenPoint(Target.TrackedPoint); if (targetScreenPosition.z > 0) { targetScreenPosition.y = Screen.height - targetScreenPosition.y; GUI.color = CinemachineSettings.ComposerSettings.TargetColour; Rect r = new Rect(targetScreenPosition, Vector2.zero); float size = (CinemachineSettings.ComposerSettings.TargetSize + CinemachineScreenComposerGuides.kGuideBarWidthPx) / 2; GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture); size -= CinemachineScreenComposerGuides.kGuideBarWidthPx; if (size > 0) { Vector4 overlayOpacityScalar = new Vector4(1f, 1f, 1f, CinemachineSettings.ComposerSettings.OverlayOpacity); GUI.color = Color.black * overlayOpacityScalar; GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture); } } } }
/// <summary> /// Signal that the virtual camera's content is discontinuous WRT the previous frame. /// If the camera is live, then all CinemachineBrains that are showing it will send a cut event. /// </summary> public void GenerateCameraCutEvent(ICinemachineCamera vcam) { if (vcam != null) { for (int i = 0; i < BrainCount; ++i) { CinemachineBrain b = GetActiveBrain(i); if (b != null && b.IsLive(vcam)) { b.m_CameraCutEvent.Invoke(b); } } } }
/// <summary> /// Is this virtual camera currently actively controlling any Camera? /// </summary> public bool IsLive(ICinemachineCamera vcam) { if (vcam != null) { for (int i = 0; i < BrainCount; ++i) { CinemachineBrain b = GetActiveBrain(i); if (b != null && b.IsLive(vcam)) { return(true); } } } return(false); }
public void CamDisplay() { Brain.IsLive(currentCam, true); }