Пример #1
0
 void OnEndDrag()
 {
     isDragging = false;
     SetScaleAuto();
     MeshEdit.selMesh.UpdateColliderMesh();
     MeshEdit.SaveUndoState();
     //transform.localRotation = Quaternion.identity;
 }
Пример #2
0
    public void EndSelection()
    {
        if (isSelecting)
        {
            isSelecting   = false;
            image.enabled = false;

            foreach (ISelectable point in MeshEdit.selMesh.GetAllPoints())
            {
                Vector2 screenPos = Camera.main.WorldToScreenPoint(point.Pos);
                Rect    test      = CornersToRect();
                if (test.Contains(screenPos))
                {
                    point.Selected = true;
                }
            }
            transformGizmo.SetPositionAuto();
            transformGizmo.OnSelectionChange();
            MeshEdit.SaveUndoState();
        }
    }
Пример #3
0
    void OnBeginDrag(Axis axis)
    {
        if (gizmoMode == GizmoMode.extrude && MeshEdit.selectionMode == 1)
        {
            MeshEdit.selMesh.BeginExtrude(MeshEdit.selMesh.selFaces);
        }
        isDragging = true;
        MeshEdit.OnTransformGizmoBeginDrag();
        switch (axis)
        {
        case Axis.x:
            axisRay = new Ray(transform.position, transform.right);
            break;

        case Axis.y:
            axisRay = new Ray(transform.position, transform.up);
            break;

        case Axis.z:
            axisRay = new Ray(transform.position, transform.forward);
            break;

        case Axis.all:
            axisRay = new Ray(transform.position, Vector3.one);
            break;
        }

        if (gizmoMode != GizmoMode.rotate)
        {
            prevPos = MathX.ScreenToPointOnAxis(axisRay);
        }
        else
        {
            prevPos = GetMouseAngleFromGizmo();
        }
    }
Пример #4
0
    void WhileDragging()
    {
        if (gizmoMode != GizmoMode.rotate)
        {
            Debug.DrawRay(transform.position, axisRay.direction * 10);
            //Ray axisRay = new Ray(transform.position, transform.right);

            float newPos = MathX.ScreenToPointOnAxis(axisRay);
            //DebugPoint(newPos, Color.green);
            float posDelta = newPos - prevPos;
            prevPos = newPos;

            //Debug.Log(prevPos.ToString());

            if (gizmoMode == GizmoMode.translate || gizmoMode == GizmoMode.extrude)
            {
                transform.position += axisRay.direction * posDelta;
                MeshEdit.OnTranslateGizmoDragged(axisRay.direction * posDelta);
            }
            else
            {
                MeshEdit.OnScaleGizmoDragged(axisRay.direction * posDelta);
                //transform.localScale += axisRay.direction * posDelta;
            }
            SetScaleAuto();
        }
        else
        {
            //float newPos = GetMouseAngleFromGizmo();
            float posDelta = GetMouseAngleFromGizmoRelative();                       // newPos - prevPos;
            prevPos += posDelta;
            Quaternion rotAngle = Quaternion.AngleAxis(posDelta, axisRay.direction); //Euler(axisRay.direction * posDelta);
            MeshEdit.OnRotateGizmoDragged(rotAngle);
            transform.Rotate(axisRay.direction, posDelta, Space.World);
        }
    }