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; }