Geometry & Space Utilities
WorldToLocalUV
WorldToLocalUVpublic Vector2 WorldToLocalUV(Vector3 worldPos)
{
Vector3 local = transform.InverseTransformPoint(worldPos) - meshOffset;
GetProjectionBasis(out Vector3 r, out Vector3 up, out _);
float u = Vector3.Dot(local, r) / Mathf.Max(kEpsilon, raycastGridExtent.x) + 0.5f;
float v = Vector3.Dot(local, up) / Mathf.Max(kEpsilon, raycastGridExtent.y) + 0.5f;
return new Vector2(u, v);
}IsPointInsideMask
IsPointInsideMaskpublic bool IsPointInsideMask(Vector3 worldPos)
{
Vector3 local = transform.InverseTransformPoint(worldPos);
Vector3 c = center;
return
Mathf.Abs(local.x - c.x) <= size.x * 0.5f &&
Mathf.Abs(local.y - c.y) <= size.y * 0.5f &&
Mathf.Abs(local.z - c.z) <= maxDistance * 0.5f;
}GetProjectionBasis
GetProjectionBasisProjectPointOntoSurface
ProjectPointOntoSurfaceLast updated