コード例 #1
0
        public override void OnToolGUI(EditorWindow window)
        {
            base.OnToolGUI(window);

            var shape = target as Shape;

            if (shape && shape.ShapeData != null)
            {
                Handles.color  = baseColor;
                Handles.matrix = shape.transform.localToWorldMatrix;

                var inTangentControlIds  = new NativeArray <int>(shape.ShapeData.GetPolyPointCount(), Allocator.Temp);
                var outTangentControlIds = new NativeArray <int>(shape.ShapeData.GetPolyPointCount(), Allocator.Temp);
                var pointControlIds      = new NativeArray <int>(shape.ShapeData.GetPolyPointCount(), Allocator.Temp);
                ShapeEditorUtils.Fill(inTangentControlIds, -1);
                ShapeEditorUtils.Fill(outTangentControlIds, -1);
                ShapeEditorUtils.Fill(pointControlIds, -1);

                ShapeEditorUtils.DrawTangentLines(shape);
                DrawPositionHandles(shape, pointControlIds, currentPointId);
                DrawTangentHandles(shape, inTangentControlIds, outTangentControlIds, currentPointId);

                var newPoint = ShapeEditorUtils.GetCurrentSelectedPoint(pointControlIds, inTangentControlIds, outTangentControlIds);
                if (newPoint != -1 && currentPointId != newPoint)
                {
                    currentPointId = newPoint;
                }

                inTangentControlIds.Dispose();
                outTangentControlIds.Dispose();
                pointControlIds.Dispose();
            }
        }