Esempio n. 1
0
        private static void DrawFreeLookGizmos(CinemachineFreeLook vcam, GizmoType selectionType)
        {
            // Standard frustum and logo
            CinemachineVirtualCameraBaseEditor.DrawVirtualCameraBaseGizmos(vcam, selectionType);

            Color originalGizmoColour = Gizmos.color;
            bool  isActiveVirtualCam  = CinemachineCore.Instance.IsLive(vcam);

            Gizmos.color = isActiveVirtualCam
                ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
                : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;

            if (vcam.Follow != null)
            {
                Vector3 pos       = vcam.Follow.position;
                var     TopRig    = vcam.GetRig(0).GetCinemachineComponent <CinemachineOrbitalTransposer>();
                var     MiddleRig = vcam.GetRig(1).GetCinemachineComponent <CinemachineOrbitalTransposer>();
                var     BottomRig = vcam.GetRig(2).GetCinemachineComponent <CinemachineOrbitalTransposer>();
                DrawCircleAtPointWithRadius(pos + Vector3.up * TopRig.m_HeightOffset, TopRig.m_Radius, vcam);
                DrawCircleAtPointWithRadius(pos + Vector3.up * MiddleRig.m_HeightOffset, MiddleRig.m_Radius, vcam);
                DrawCircleAtPointWithRadius(pos + Vector3.up * BottomRig.m_HeightOffset, BottomRig.m_Radius, vcam);
                DrawCameraPath(pos, vcam);
            }

            Gizmos.color = originalGizmoColour;
        }
        private static void DrawFreeLookGizmos(CinemachineFreeLook vcam, GizmoType selectionType)
        {
            // Standard frustum and logo
            CinemachineVirtualCameraBaseEditor.DrawVirtualCameraBaseGizmos(vcam, selectionType);

            Color originalGizmoColour = Gizmos.color;
            bool  isActiveVirtualCam  = CinemachineCore.Instance.IsLive(vcam);

            Gizmos.color = isActiveVirtualCam
                ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
                : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;

            if (vcam.Follow != null)
            {
                Vector3          pos       = vcam.Follow.position;
                var              TopRig    = vcam.GetRig(0).GetCinemachineComponent <CinemachineOrbitalTransposer>();
                var              MiddleRig = vcam.GetRig(1).GetCinemachineComponent <CinemachineOrbitalTransposer>();
                var              BottomRig = vcam.GetRig(2).GetCinemachineComponent <CinemachineOrbitalTransposer>();
                Vector3          up        = Vector3.up;
                CinemachineBrain brain     = CinemachineCore.Instance.FindPotentialTargetBrain(vcam);
                if (brain != null)
                {
                    up = brain.DefaultWorldUp;
                }

                Quaternion orient = TopRig.GetReferenceOrientation(up);
                up = orient * Vector3.up;
                float rotation = vcam.m_XAxis.Value + vcam.m_Heading.m_HeadingBias;
                orient = Quaternion.AngleAxis(rotation, up) * orient;

                CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius(
                    pos + up * TopRig.m_FollowOffset.y, orient, TopRig.m_FollowOffset.z);
                CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius(
                    pos + up * MiddleRig.m_FollowOffset.y, orient, MiddleRig.m_FollowOffset.z);
                CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius(
                    pos + up * BottomRig.m_FollowOffset.y, orient, BottomRig.m_FollowOffset.z);

                DrawCameraPath(pos, orient, vcam);
            }

            Gizmos.color = originalGizmoColour;
        }