public void FitToTarget(TargetSizer targetSizer, bool useCollider = false) { PointOfInterest interestPoint = targetSizer.GetComponent<PointOfInterest>(); Vector3 targetSize = new Vector3(0.001f, 0.001f, 0.001f); Vector3 targetPosition = targetSizer.gameObject.transform.position; Quaternion targetRotation = TransitionManager.Instance.ViewVolume.transform.rotation; if (targetSizer.TargetFillCollider != null) { targetSize = useCollider ? targetSizer.TargetFillCollider.bounds.size : targetSizer.TargetFillCollider.transform.lossyScale; targetPosition = targetSizer.TargetFillCollider.transform.parent.position; targetRotation = targetSizer.TargetFillCollider.transform.parent.rotation; } else if (interestPoint != null) { targetPosition -= interestPoint.IndicatorOffset; } gameObject.transform.position = targetPosition; gameObject.transform.rotation = targetRotation; float parentScale = useCollider ? Mathf.Max(TargetFillCollider.bounds.size.x, TargetFillCollider.bounds.size.y, TargetFillCollider.bounds.size.z) / Mathf.Max(gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z) : Mathf.Max(TargetFillCollider.transform.lossyScale.x, TargetFillCollider.transform.lossyScale.y, TargetFillCollider.transform.lossyScale.z) / Mathf.Max(gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z); gameObject.transform.localScale = targetSize / parentScale; }
public void FitToTarget(TargetSizer targetSizer, bool useCollider = false) { PointOfInterest interestPoint = targetSizer.GetComponent <PointOfInterest>(); Vector3 targetSize = new Vector3(0.001f, 0.001f, 0.001f); Vector3 targetPosition = targetSizer.gameObject.transform.position; Quaternion targetRotation = TransitionManager.Instance.ViewVolume.transform.rotation; if (targetSizer.TargetFillCollider != null) { targetSize = useCollider ? targetSizer.TargetFillCollider.bounds.size : targetSizer.TargetFillCollider.transform.lossyScale; targetPosition = targetSizer.TargetFillCollider.transform.parent.position; targetRotation = targetSizer.TargetFillCollider.transform.parent.rotation; } else if (interestPoint != null) { targetPosition -= interestPoint.IndicatorOffset; } gameObject.transform.position = targetPosition; gameObject.transform.rotation = targetRotation; float parentScale = useCollider ? Mathf.Max(TargetFillCollider.bounds.size.x, TargetFillCollider.bounds.size.y, TargetFillCollider.bounds.size.z) / Mathf.Max(gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z) : Mathf.Max(TargetFillCollider.transform.lossyScale.x, TargetFillCollider.transform.lossyScale.y, TargetFillCollider.transform.lossyScale.z) / Mathf.Max(gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z); gameObject.transform.localScale = targetSize / parentScale; }