/// <summary> /// note that currently only the height, along the y-axis is scalable. This can /// be more generalized using a serialized boolean/enum field in this script /// </summary> public void PerformScalingUpdateUsingManipulation(Vector3 cumulativeDelta) { // we should make this one use manipulation gesture rather than navigation Vector3 moveVector = Vector3.zero; Vector3 cumulativeDeltaInCameraSpace = Camera.main.transform.InverseTransformPoint(cumulativeDelta); moveVector = cumulativeDeltaInCameraSpace - previousManipulationPosition; previousManipulationPosition = cumulativeDeltaInCameraSpace; float currentYScale = transform.localScale.y; float scalingFactor = moveVector.y * ScalingSensitivity; bool isExceedingLimit; if (currentYScale + scalingFactor <= minimumScale) { isExceedingLimit = true; } else { transform.localScale += new Vector3(0, scalingFactor, 0); isExceedingLimit = false; } OnScalingUpdated.Invoke(isExceedingLimit); }
public void PerformScalingUpdateUsingNavigation(Vector3 normalizedOffset) { float yMovement = normalizedOffset.y; float scalingFactor = yMovement * ScalingSensitivity; float currentScale = transform.localScale.x; bool isExceedingLimit = true; if (currentScale + scalingFactor > maximumScale) { transform.localScale = Vector3.one * maximumScale; } else if (currentScale + scalingFactor < minimumScale) { transform.localScale = Vector3.one * minimumScale; } else { isExceedingLimit = false; transform.localScale += new Vector3(scalingFactor, scalingFactor, scalingFactor); } OnScalingUpdated.Invoke(isExceedingLimit); }