Пример #1
0
    // Start is called before the first frame update
    void OnSceneGUI()
    {
        WildObstacle obstacle = (WildObstacle)target;

        Handles.color = Color.green;


        //if (GUILayout.Button("Rest Area"))
        //{
        //    arraw.shieldAre += 1.0f;  //改变数值
        //}
        for (int i = 0; i < obstacle.PointsList.Count; i++)
        {
            _DoBodyFreeMoveHandle(obstacle.PointsList[i], i);
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
        }

        //画出弧线
        //Handles.DrawWireArc(arraw.transform.position, arraw.transform.up, -arraw.transform.right, 180, arraw.shieldAre);
        ////计算值
        //arraw.shieldAre = Handles.ScaleValueHandle(arraw.shieldAre,
        //arraw.transform.position + arraw.transform.forward * arraw.shieldAre,
        //arraw.transform.rotation, 1, Handles.ConeCap, 1);
    }
Пример #2
0
    private void _DoBodyFreeMoveHandle(Vector3 vPos, int idx)
    {
        WildObstacle obstacle   = (WildObstacle)target;
        Vector3      vTransform = obstacle.transform.TransformPoint(vPos);


        EditorGUI.BeginChangeCheck();
        Handles.color = Color.green;
        Handles.Label(vTransform + Vector3.up * 0.2f, "P" + idx);


        //NOTE: vBodyHandler will be the body size change difference
        Vector3 vBodyHandler = Handles.FreeMoveHandle(vTransform, Quaternion.identity, 0.15f * HandleUtility.GetHandleSize(obstacle.transform.position), Vector3.zero, SphereCap) - vTransform;

        //Vector3 vBodyHandler = Handles.FreeMoveHandle(vTransform, Quaternion.identity, 0.15f * HandleUtility.GetHandleSize(footHold.transform.position), Vector3.zero, EditorCompatibilityUtils.SphereCap) - vTransform;
        vBodyHandler = obstacle.transform.InverseTransformVector(vBodyHandler);

        if (EditorGUI.EndChangeCheck())
        {
            obstacle.PointsList[idx] += new Vector2(vBodyHandler.x, vBodyHandler.y);
            EditorUtility.SetDirty(target);
        }
    }