Example #1
0
    private void OnSceneGUI()
    {
        // save position in local space
        DashedCurve.CurveType t = (DashedCurve.CurveType)type.enumValueIndex;
        switch (t)
        {
        case DashedCurve.CurveType.Quadratic:
            start.vector3Value   = ShowPoint(start.vector3Value);
            handle1.vector3Value = ShowPoint(handle1.vector3Value);
            handle2.vector3Value = handle1.vector3Value;
            end.vector3Value     = ShowPoint(end.vector3Value);
            break;

        case DashedCurve.CurveType.Cubic:
            start.vector3Value   = ShowPoint(start.vector3Value);
            handle1.vector3Value = ShowPoint(handle1.vector3Value);
            handle2.vector3Value = ShowPoint(handle2.vector3Value);
            end.vector3Value     = ShowPoint(end.vector3Value);
            break;
        }
        serializedObject.ApplyModifiedProperties();

        // draw in world space
        Handles.color = Color.gray;
        Handles.DrawAAPolyLine(3,
                               transform.TransformPoint(start.vector3Value),
                               transform.TransformPoint(handle1.vector3Value));
        Handles.DrawAAPolyLine(3,
                               transform.TransformPoint(end.vector3Value),
                               transform.TransformPoint(handle2.vector3Value));

        switch (t)
        {
        case DashedCurve.CurveType.Quadratic:
            HandleExtensions.DrawBezier2(transform.TransformPoint(start.vector3Value),
                                         transform.TransformPoint(end.vector3Value),
                                         transform.TransformPoint(handle1.vector3Value),
                                         Color.cyan, null, 5);
            break;

        case DashedCurve.CurveType.Cubic:
            Handles.DrawBezier(
                transform.TransformPoint(start.vector3Value),
                transform.TransformPoint(end.vector3Value),
                transform.TransformPoint(handle1.vector3Value),
                transform.TransformPoint(handle2.vector3Value),
                Color.cyan, null, 5);
            break;
        }
    }
Example #2
0
    public override void OnInspectorGUI()
    {
        GUILayout.Space(10f);

        GUILayout.Label("Interpolation", EditorStyles.boldLabel);
        serializedObject.Update();
        EditorGUILayout.PropertyField(type);

        GUILayout.Space(5f);

        GUILayout.Label("Control points", EditorStyles.boldLabel);
        DashedCurve.CurveType t = (DashedCurve.CurveType)type.enumValueIndex;
        switch (t)
        {
        case DashedCurve.CurveType.Quadratic:
            EditorGUILayout.PropertyField(start);
            EditorGUILayout.PropertyField(handle1);
            handle2.vector3Value = handle1.vector3Value;
            EditorGUILayout.PropertyField(end);
            break;

        case DashedCurve.CurveType.Cubic:
            EditorGUILayout.PropertyField(start);
            EditorGUILayout.PropertyField(handle1);
            EditorGUILayout.PropertyField(handle2);
            EditorGUILayout.PropertyField(end);
            break;
        }

        GUILayout.Space(5f);

        GUILayout.Label("Curve params", EditorStyles.boldLabel);
        EditorGUILayout.PropertyField(width);
        EditorGUILayout.PropertyField(subdivisions);
        if (subdivisions.intValue < 0)
        {
            subdivisions.intValue = 0;
        }
        EditorGUILayout.PropertyField(stripLenght);
        EditorGUILayout.PropertyField(emptyStripLenght);

        serializedObject.ApplyModifiedProperties();
    }