using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
public class ClosestPoint : MonoBehaviour
{
private void Start()
{
var collider = new GameObject().AddComponent<BoxCollider>();
// Perform a single closest point using ClosestPointCommand and wait for it to complete
// Set up the command and result buffers
var results = new NativeArray<Vector3>(1, Allocator.TempJob);
var commands = new NativeArray<ClosestPointCommand>(1, Allocator.TempJob);
commands[0] = new ClosestPointCommand(Vector3.one * 5, collider.GetInstanceID(), Vector3.zero, Quaternion.identity, collider.transform.lossyScale);
// Schedule the batch of closest points
JobHandle handle = ClosestPointCommand.ScheduleBatch(commands, results, 1, default(JobHandle));
// Wait for the batch processing job to complete
handle.Complete();
// Copy the result. If the point is inside of the Collider, it is returned as a result
Vector3 closestPoint = results[0];
// Dispose of the buffers
results.Dispose();
commands.Dispose();
}
}