示例#1
0
    public void FinishUsingHandle(Selection controller)
    {
        if (typeOfHandle != handleType.Height && typeOfHandle != handleType.ScaleFace)
        {
            if (handles.rotationHandlesvisible || (ModeChanger.Instance.modeChangerActive && ModeChanger.Instance.currentMode == ModeChanger.BuildingMode.RotationMode))
            {
                handles.ShowRotationHandles();
            }
            handles.ShowNonUniformScalingHandles();
        }

        if (typeOfHandle == handleType.RotateTranslate)
        {
            connectedModelingObject.StopMoving(controller, connectedModelingObject);

            // destroz previous distance vis
            foreach (Transform visualObject in connectedModelingObject.DistanceVisualisation)
            {
                Destroy(visualObject.gameObject);
            }
        }

        if (typeOfHandle == handleType.MoveY)
        {
            // destroz previous distance vis
            foreach (Transform visualObject in connectedModelingObject.DistanceVisualisation)
            {
                Destroy(visualObject.gameObject);
            }
        }

        if (typeOfHandle == handleType.RotationHandleToggle)
        {
            handles.ToggleOnOffRotationHandles();
        }

        if (rotationVisual != null)
        {
            Destroy(rotationVisual);
            Destroy(CurrentRotationLine);
            Destroy(RotationOnStartLine);
        }

        VisualizeAngle.Instance.Hide();

        connectedModelingObject.ShowBoundingBox(false);

        Vector3 newScale = Vector3.one;
        float   highestDistanceToCenter = connectedModelingObject.boundingBoxWorld.getMaxDistanceinBB(connectedModelingObject.GetBoundingBoxCenterWorld());

        /*
         * if ((connectedModelingObject.GetBoundingBoxCenter () - connectedModelingObject.GetBoundingBoxFrontCenter()).magnitude > (connectedModelingObject.GetBoundingBoxCenter () - connectedModelingObject.GetBoundingBoxLeftCenter ()).magnitude) {
         *      newScale = Vector3.one * (connectedModelingObject.GetBoundingBoxCenter () - connectedModelingObject.GetBoundingBoxFrontCenter()).magnitude * 3f;
         * } else {
         *      newScale = Vector3.one * (connectedModelingObject.GetBoundingBoxCenter () - connectedModelingObject.GetBoundingBoxLeftCenter()).magnitude * 3f;
         * }*/

        handles.RotateX.transform.localScale = newScale * highestDistanceToCenter * 2f;
        handles.RotateY.transform.localScale = newScale * highestDistanceToCenter * 2f;
        handles.RotateZ.transform.localScale = newScale * highestDistanceToCenter * 2f;

        handles.groundPlane.transform.localScale = newScale * highestDistanceToCenter * 0.5f;

        TouchElements.Instance.UnfocusAll();
    }