internal static int GetNeatestVertToMouseRay(Vector3[] meshVertices, Matrix4x4 meshTransform, Camera camera, Vector3 mouseDir) { VertJobHandle newResultAndHandle = new VertJobHandle(); ScheduleVertJob(ref newResultAndHandle, meshVertices, meshTransform, camera, mouseDir); return(CompleteVertJob(newResultAndHandle)); }
private static void ScheduleVertJob(ref VertJobHandle handle, Vector3[] meshVertices, Matrix4x4 meshTransform, Camera camera, Vector3 mouseDir) { handle.vertices = new NativeArray <Vector3>(array: meshVertices, allocator: Allocator.TempJob); closestVertDistanceCriteria = 40000; closestVertID = 0; FindClosestVertexJob newJob = new FindClosestVertexJob { vertices = handle.vertices, cameraPos = camera.transform.position, mouseDir = mouseDir, localToWorldMat = meshTransform, }; handle.handle = newJob.Schedule(meshVertices.Length, 32); }
private static int CompleteVertJob(VertJobHandle handle) { handle.handle.Complete(); handle.vertices.Dispose(); return(closestVertID); }