internal void OnDisable()
        {
            ShouldDrawSceneGUI = false;

            Tools.hidden = false;
            CurveEditorState.ClearKnotSelection();
            Repaint();
        }
예제 #2
0
        private void ValidateSelected()
        {
            if (CurveEditorState.ValidateSelectedKnotIsValid(_spline))
            {
                CurveEditorState.ClearKnotSelection();

                Repaint();
            }
        }
예제 #3
0
        public static void CheckSelectedKnotHotkeys(
            IBezier3DSplineData splineData,
            Action <IReadOnly3DSplineData> onUpdateSpline)
        {
            var evt = Event.current;

            switch (evt.type)
            {
            case EventType.KeyDown:
                // Delete Selected Knot
                if (evt.keyCode == KeyCode.Delete)
                {
                    if (splineData.KnotCount > 2)
                    {
                        Undo.RecordObject((UnityEngine.Object)splineData, "Remove Bezier Point");
                        splineData.RemoveKnot(CurveEditorState.SelectedKnotIndex);

                        CurveEditorState.ClearKnotSelection();

                        onUpdateSpline?.Invoke(splineData);
                    }

                    evt.Use();
                }

                // Focus Selected Knot
                if (evt.keyCode == KeyCode.F)
                {
                    var dist = splineData.GetSplineDistanceForKnotIndex(CurveEditorState.SelectedKnotIndex);
                    var pos  = splineData.GetPosition(dist);

                    SceneView.lastActiveSceneView.Frame(new Bounds(pos, Vector3.one * 5f), false);

                    evt.Use();
                }

                // Clear Knot Selection
                if (evt.keyCode == KeyCode.Escape)
                {
                    CurveEditorState.ClearKnotSelection();
                    evt.Use();
                }

                break;
            }
        }