using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
public class BoxcastCommandExample : MonoBehaviour
{
    void Start()
    {
        // Perform a single boxcast using BoxcastCommand and wait for it to complete
        // Set up the command and result buffers
        var results = new NativeArray<RaycastHit>(2, Allocator.TempJob);
        var commands = new NativeArray<BoxcastCommand>(1, Allocator.TempJob);
        // Set the data of the first command
        Vector3 center = Vector3.zero;
        Vector2 halfExtents = Vector3.one * 0.5f;
        Quaternion orientation = Quaternion.identity;
        Vector3 direction = Vector3.forward;
        commands[0] = new BoxcastCommand(center, halfExtents, orientation, direction, QueryParameters.Default);
        // Schedule the batch of boxcasts
        var handle = BoxcastCommand.ScheduleBatch(commands, results, 1, 2, default(JobHandle));
        // Wait for the batch processing job to complete
        handle.Complete();
        // If batchedHit.collider is not null there was a hit
        foreach (var hit in results)
        {
            if (hit.collider != null)
            {
                // Do something with results
            }
        }
        // Dispose the buffers
        results.Dispose();
        commands.Dispose();
    }
}