예제 #1
0
    public void OnSceneGUI()
    {
        CirlceRenderer circle = (CirlceRenderer)target;

        if (!circle)
        {
            return;
        }

        float size = HandleUtility.GetHandleSize(circle.transform.position) * 1f;

        EditorGUI.BeginChangeCheck();
        Vector3 handleDirecton = circle.transform.right + circle.transform.forward;

        handleDirecton = Vector3.Normalize(handleDirecton) * 1.2f;

        float scale  = Handles.ScaleSlider(circle.SegmentCount, circle.transform.position, handleDirecton, circle.transform.rotation, size, 1);
        float radius = Handles.RadiusHandle(circle.transform.rotation, circle.transform.up, circle.Radius);

        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(circle, "Modify Circle Scale");
            if (scale > 8)
            {
                circle.SegmentCount = (uint)scale;
            }

            circle.Radius = radius;
            circle.UpdateCircle();
        }
    }
예제 #2
0
    void OnGUI()
    {
        CirlceRenderer circle = Selection.activeGameObject.GetComponent <CirlceRenderer>();

        Rect rect = new Rect(10, 40, 100, 100);

        if (!circle)
        {
            return;
        }
        EditorGUILayout.LabelField("Radius");
        circle.Radius = EditorGUILayout.Slider(circle.Radius, 1, 100);
        EditorGUILayout.LabelField("Segments");
        circle.SegmentCount = (uint)EditorGUILayout.IntSlider((int)circle.SegmentCount, 8, 100);
        circle.UpdateCircle();
    }