Esempio n. 1
0
    private void OnSceneGUI()
    {
        if (targetComponents.hitboxes == null)
        {
            return;
        }

        int animationindex = 0;
        int keyframeIndex  = 0;

        if (traceAnimMode == TraceAnimMode.Scene)
        {
            animationindex = targetComponents.GetStateNames().FindIndex(e => e == targetComponents.GetNowStateName());
            keyframeIndex  = targetComponents.GetNowKeyFrame();
        }
        else
        {
            animationindex = targetComponents.inspectorTemp.animationindex;
            keyframeIndex  = targetComponents.inspectorTemp.keyframeIndex;
        }

        var animname = targetComponents.GetStateNames()[animationindex];

        try
        {
            var a = targetComponents.hitboxes[animname].keyframes[keyframeIndex].colliders;
        }
        catch
        {
            return;
        }

        foreach (var col in targetComponents.hitboxes[animname].keyframes[keyframeIndex].colliders)
        {
#if UNITY_EDITOR
            var precolor = Handles.color;
            var so       = new SerializedObject(col.colliderParam);
            Handles.color = new Color(0, 0, 0);

            var sign = targetComponents.GetDirectionSign();

            var position = col.colliderParam.Position;
            position.Scale(new Vector3(sign, 1, 1));
            var movedPosition = Handles.FreeMoveHandle(position + targetComponents.gameObject.transform.position,
                                                       Quaternion.identity,
                                                       0.05f,
                                                       Vector3.one,
                                                       Handles.DotHandleCap);

            var newposition = movedPosition - targetComponents.gameObject.transform.position;
            newposition.Scale(new Vector3(sign, 1.0f, 1.0f));
            col.colliderParam.Position = newposition;

            if (col.colliderParam is RectColliderParam)
            {
                var rect   = col.colliderParam as RectColliderParam;
                var helper = new Vector3(rect.rect.size.x * sign, rect.rect.size.y, 0.0f);
                Handles.color = new Color(1, 1, 1);
                var helperpreposition = position + helper;
                helperpreposition.Scale(new Vector3(sign, 1.0f, 1.0f));
                var movedhelper = Handles.FreeMoveHandle(helper + position + targetComponents.gameObject.transform.position,
                                                         Quaternion.identity,
                                                         0.05f,
                                                         Vector3.one,
                                                         Handles.DotHandleCap);

                var newsize = movedhelper - (position + targetComponents.gameObject.transform.position);
                newsize.Scale(new Vector3(sign, 1.0f, 1.0f));
                rect.rect.size = newsize;
            }
            else if (col.colliderParam is SphereColliderParam)
            {
                var sphere = col.colliderParam as SphereColliderParam;
                var helper = new Vector3(sphere.radius, 0.0f, 0.0f);
                Handles.color = new Color(1, 1, 1);
                var helperpreposition = position + helper;
                helperpreposition.Scale(new Vector3(sign, 1.0f, 1.0f));
                var movedhelper = Handles.FreeMoveHandle(helper + position + targetComponents.gameObject.transform.position,
                                                         Quaternion.identity,
                                                         0.05f,
                                                         Vector3.one,
                                                         Handles.DotHandleCap);

                sphere.radius = Mathf.Abs((movedhelper - (position + targetComponents.gameObject.transform.position)).x);
            }

            EditorUtility.SetDirty(targetComponents.hitboxes);
            Handles.color = precolor;

            Repaint();
#endif
        }
    }