void DrawSceneTools()
        {
            var freelook = Target;

            if (freelook == null || !freelook.IsValid)
            {
                return;
            }

            var originalColor = Handles.color;

            Handles.color = Handles.preselectionColor;
            if (freelook.m_CommonLens && CinemachineSceneToolUtility.IsToolActive(typeof(FoVTool)))
            {
                CinemachineSceneToolHelpers.FovToolHandle(freelook,
                                                          new SerializedObject(freelook).FindProperty(() => freelook.m_Lens),
                                                          freelook.m_Lens, IsHorizontalFOVUsed());
            }
            else if (freelook.m_CommonLens && CinemachineSceneToolUtility.IsToolActive(typeof(FarNearClipTool)))
            {
                CinemachineSceneToolHelpers.NearFarClipHandle(freelook,
                                                              new SerializedObject(freelook).FindProperty(() => freelook.m_Lens));
            }
            else if (freelook.Follow != null && CinemachineSceneToolUtility.IsToolActive(typeof(FollowOffsetTool)))
            {
                var draggedRig = CinemachineSceneToolHelpers.OrbitControlHandle(freelook,
                                                                                new SerializedObject(freelook).FindProperty(() => freelook.m_Orbits));
                if (draggedRig >= 0)
                {
                    SetSelectedRig(Target, draggedRig);
                }
            }
            Handles.color = originalColor;
        }
        void DrawSceneTools()
        {
            var newFreelook = Target;

            if (newFreelook == null || !newFreelook.IsValid)
            {
                return;
            }

            if (CinemachineSceneToolUtility.IsToolActive(typeof(FoVTool)))
            {
                CinemachineSceneToolHelpers.FovToolHandle(newFreelook,
                                                          new SerializedObject(newFreelook).FindProperty(() => newFreelook.m_Lens),
                                                          newFreelook.m_Lens, IsHorizontalFOVUsed());
            }
            else if (CinemachineSceneToolUtility.IsToolActive(typeof(FarNearClipTool)))
            {
                CinemachineSceneToolHelpers.NearFarClipHandle(newFreelook,
                                                              new SerializedObject(newFreelook).FindProperty(() => newFreelook.m_Lens));
            }
            else if (newFreelook.Follow != null && CinemachineSceneToolUtility.IsToolActive(typeof(FollowOffsetTool)))
            {
                CinemachineSceneToolHelpers.OrbitControlHandle(newFreelook,
                                                               new SerializedObject(newFreelook).FindProperty(() => newFreelook.m_Orbits));
            }
        }
Example #3
0
        protected override void OnEnable()
        {
            base.OnEnable();
            Undo.undoRedoPerformed += ResetTargetOnUndo;
            m_PipelineSet.Initialize(
                // GetComponent
                (stage, result) =>
            {
                int numNullComponents = 0;
                foreach (var obj in targets)
                {
                    var vcam = obj as CinemachineNewVirtualCamera;
                    if (vcam != null)
                    {
                        var c = vcam.GetCinemachineComponent(stage);
                        if (c != null)
                        {
                            result.Add(c);
                        }
                        else
                        {
                            ++numNullComponents;
                        }
                    }
                }
                return(numNullComponents);
            },
                // SetComponent
                (stage, type) =>
            {
                Undo.SetCurrentGroupName("Cinemachine pipeline change");
                foreach (var obj in targets)
                {
                    var vcam = obj as CinemachineNewVirtualCamera;
                    if (vcam != null)
                    {
                        Component c = vcam.GetCinemachineComponent(stage);
                        if (c != null && c.GetType() == type)
                        {
                            continue;
                        }
                        if (c != null)
                        {
                            Undo.DestroyObjectImmediate(c);
                            vcam.InvalidateComponentCache();
                        }
                        if (type != null)
                        {
                            Undo.AddComponent(vcam.gameObject, type);
                            vcam.InvalidateComponentCache();
                        }
                    }
                }
            });

#if UNITY_2021_2_OR_NEWER
            CinemachineSceneToolUtility.RegisterTool(typeof(FoVTool));
            CinemachineSceneToolUtility.RegisterTool(typeof(FarNearClipTool));
#endif
        }
Example #4
0
        void DrawSceneTools()
        {
            var vcam = Target;

            if (vcam == null || !vcam.IsValid || vcam.m_ExcludedPropertiesInInspector.Contains("m_Lens"))
            {
                return;
            }

            var originalColor = Handles.color;

            Handles.color = Handles.preselectionColor;
            if (CinemachineSceneToolUtility.IsToolActive(typeof(FoVTool)))
            {
                CinemachineSceneToolHelpers.FovToolHandle(vcam,
                                                          new SerializedObject(vcam).FindProperty(() => vcam.m_Lens),
                                                          vcam.m_Lens, IsHorizontalFOVUsed());
            }
            else if (CinemachineSceneToolUtility.IsToolActive(typeof(FarNearClipTool)))
            {
                CinemachineSceneToolHelpers.NearFarClipHandle(vcam,
                                                              new SerializedObject(vcam).FindProperty(() => vcam.m_Lens));
            }
            Handles.color = originalColor;
        }
        protected override void OnDisable()
        {
            m_PipelineSet.Shutdown();
            base.OnDisable();

#if UNITY_2021_2_OR_NEWER
            CinemachineSceneToolUtility.UnregisterTool(typeof(FoVTool));
            CinemachineSceneToolUtility.UnregisterTool(typeof(FarNearClipTool));
            CinemachineSceneToolUtility.UnregisterTool(typeof(FollowOffsetTool));
#endif
        }
Example #6
0
        protected override void OnDisable()
        {
            Undo.undoRedoPerformed -= ResetTargetOnUndo;
            m_PipelineSet.Shutdown();
            base.OnDisable();

#if UNITY_2021_2_OR_NEWER
            CinemachineSceneToolUtility.UnregisterTool(typeof(FoVTool));
            CinemachineSceneToolUtility.UnregisterTool(typeof(FarNearClipTool));
#endif
        }
        protected override void OnEnable()
        {
            base.OnEnable();
            Target.UpdateInputAxisProvider();

#if UNITY_2021_2_OR_NEWER
            CinemachineSceneToolUtility.RegisterTool(typeof(FoVTool));
            CinemachineSceneToolUtility.RegisterTool(typeof(FarNearClipTool));
            CinemachineSceneToolUtility.RegisterTool(typeof(FollowOffsetTool));
            CinemachineSceneToolUtility.RegisterTool(typeof(FreelookRigSelection));
#endif
        }
        protected override void OnDisable()
        {
            base.OnDisable();

            // Must destroy child editors or we get exceptions
            if (m_rigEditor != null)
            {
                UnityEngine.Object.DestroyImmediate(m_rigEditor);
            }

#if UNITY_2021_2_OR_NEWER
            CinemachineSceneToolUtility.UnregisterTool(typeof(FoVTool));
            CinemachineSceneToolUtility.UnregisterTool(typeof(FarNearClipTool));
            CinemachineSceneToolUtility.UnregisterTool(typeof(FollowOffsetTool));
            CinemachineSceneToolUtility.UnregisterTool(typeof(FreelookRigSelection));
#endif
        }