public MeshVertexChunk GetWorldVertChunkClosestToScreenPt(Vector2 screenPoint, Matrix4x4 worldMtx, Camera camera) { float minDistSqr = float.MaxValue; MeshVertexChunk closestChunk = null; foreach (var chunk in _vertexChunks) { AABB chunkAABB = chunk.ModelSpaceAABB; chunkAABB.Transform(worldMtx); List <Vector2> screenPts = chunkAABB.GetScreenCenterAndCornerPoints(camera); foreach (var pt in screenPts) { float distSqr = (pt - screenPoint).sqrMagnitude; if (distSqr < minDistSqr) { minDistSqr = distSqr; closestChunk = chunk; } } } return(closestChunk); }