Example #1
0
    public void ScaleUniform(GameObject pointOfCollision)
    {
        connectedModelingObject.CalculateBoundingBox();
        connectedModelingObject.boundingBox.DrawBoundingBox();

        //float input = CalculateInputFromPoint(pointOfCollision.transform.position, p1.transform.position, p2.transform.position);
        float input = CalculateInputFromPoint(pointOfCollision.transform.position, transform.position, transform.position + transform.forward);

        centerOfScaling      = connectedModelingObject.transform.InverseTransformPoint(connectedModelingObject.GetBoundingBoxBottomCenterWorld());
        touchPointForScaling = connectedModelingObject.transform.InverseTransformPoint(connectedModelingObject.GetBoundingBoxTopCenter());

        if (newScaling)
        {
            Debug.Log("new scaling");
            prevScalingAmount = input;
            newScaling        = false;
        }

        Debug.Log("new amount: " + prevScalingAmount + " and input at " + input);

        // check if we can also raster just the touchpoint
        centerOfScaling = RasterManager.Instance.Raster(centerOfScaling);

        float RasteredDistanceCenters = Mathf.Max(RasterManager.Instance.Raster((centerOfScaling - touchPointForScaling).magnitude * Mathf.Abs(1f + (input - prevScalingAmount))), RasterManager.Instance.rasterLevel * 2);

        input = (RasteredDistanceCenters / ((centerOfScaling - touchPointForScaling).magnitude)) - 1f + prevScalingAmount;

        float adjustedInput = Mathf.Abs(1f + (input - prevScalingAmount));

        //Debug.Log ("new scale is " + adjustedInput);

        connectedModelingObject.ScaleNonUniform(adjustedInput, new Vector3(1f, 1f, 1f), typeOfHandle, centerOfScaling);

        //connectedModelingObject.ScaleBy (adjustedInput, true);

        prevScalingAmount = input;
    }