Exemplo n.º 1
0
    private void OnSceneGUI()
    {
        Bezier_Intermediate bb = target as Bezier_Intermediate;

        bb.startPoint = bb.precedingBez.endPoint;

        Vector3 oldTanDir   = bb.precedingBez.endPoint - bb.precedingBez.endTangent;
        Vector3 oppositeDir = bb.startPoint + oldTanDir * bb.startTangentMagnitude;

        bb.startTangent = oppositeDir;

        EditorGUI.BeginChangeCheck();

        bb.endPoint   = Handles.PositionHandle(bb.endPoint, Quaternion.identity);
        bb.endTangent = Handles.PositionHandle(bb.endTangent, Quaternion.identity);

        Handles.DrawBezier(bb.startPoint, bb.endPoint, bb.startTangent, bb.endTangent, Color.red, null, 2f);
        Handles.color = Color.cyan;
        Handles.DrawLine(bb.startPoint, bb.startTangent);
        Handles.DrawLine(bb.endPoint, bb.endTangent);
        Handles.color = Color.white;
        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(bb, "Bezier_Intermediate Handle Undo");
        }
        Handles.SphereHandleCap(0, bb.startTangent, Quaternion.identity, 7f, EventType.Repaint);
        Handles.SphereHandleCap(0, bb.endTangent, Quaternion.identity, 7f, EventType.Repaint);
    }
Exemplo n.º 2
0
    private void OnSceneGUI()
    {
        Bezier_Intermediate bb = target as Bezier_Intermediate;

        bb.startPoint = bb.precedingBez.endPoint;

        Vector3 oldTanDir   = bb.precedingBez.endPoint - bb.precedingBez.endTangent;
        Vector3 oppositeDir = bb.startPoint + oldTanDir * bb.startTangentMagnitude;

        bb.startTangent = oppositeDir;

        bb.endPoint   = Handles.PositionHandle(bb.endPoint, Quaternion.identity);
        bb.endTangent = Handles.PositionHandle(bb.endTangent, Quaternion.identity);

        Handles.DrawBezier(bb.startPoint, bb.endPoint, bb.startTangent, bb.endTangent, Color.red, null, 2f);
        Debug.DrawLine(bb.endPoint, bb.endTangent);
    }