using System; using System.Runtime.InteropServices; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; namespace UnityEngine.XR.ARCore { /// /// Similar to NativeSlice but blittable. Provides a "view" /// into a contiguous array of memory. Used to interop with C. /// unsafe struct NativeView { public void* ptr; public int count; } static class NativeViewExtensions { public static unsafe NativeView AsNativeView(this NativeArray array) where T : struct => new NativeView { ptr = array.GetUnsafePtr(), count = array.Length }; public static unsafe NativeView AsNativeView(this NativeSlice slice) where T : struct => new NativeView { ptr = slice.GetUnsafePtr(), count = slice.Length }; } }