/// <summary> /// Starts the operation of snapping to the outside of a bounding box which is created from the center of a transform. /// </summary> public static HUMTransform.Data.ObjectBounds ObjectBounds(this HUMTransform.Data.To to, Transform snapTo) { var snapObjectHalf = to.positionData.from.transform.Size().Half(); var snapToHalf = snapTo.Size().Half(); var snapSurfaceData = new HUMTransform.Data.ObjectBounds(snapTo, to, snapObjectHalf, snapToHalf); return(snapSurfaceData); }
/// <summary> /// Snaps a previous transforms specified point to another transforms back bounding box bounds. /// </summary> public static Vector3 Back(this HUMTransform.Data.ObjectBounds bounds, float padding = 0f) { var pointOffset = Vector3.zero; switch (bounds.to.positionData.position) { case HUMTransform.Data.TransformSnapPosition.Center: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Center().To().Point(pointOffset, padding); break; case HUMTransform.Data.TransformSnapPosition.Top: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Center().To().Point(pointOffset, padding); break; case HUMTransform.Data.TransformSnapPosition.Bottom: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Bottom().To().Point(pointOffset, padding); break; case HUMTransform.Data.TransformSnapPosition.Left: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Left().To().Point(pointOffset, padding); break; case HUMTransform.Data.TransformSnapPosition.Right: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Right().To().Point(pointOffset, padding); break; case HUMTransform.Data.TransformSnapPosition.Front: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Front().To().Point(pointOffset, padding); break; case HUMTransform.Data.TransformSnapPosition.Back: pointOffset = bounds.snapTo.position - (new Vector3(0, 0, bounds.snapTo.localScale.z / 2)); bounds.to.positionData.from.transform.Snap().Back().To().Point(pointOffset, padding); break; } return(pointOffset); }