using System.Runtime.CompilerServices; using Svelto.Common; namespace Svelto.ECS.DataStructures { public struct NativeDynamicArrayCast where T : struct { public NativeDynamicArrayCast(uint size, Allocator allocator) { _array = NativeDynamicArray.Alloc(allocator, size); } public NativeDynamicArrayCast(NativeDynamicArray array) : this() { _array = array; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public int Count() => _array.Count(); public int count { [MethodImpl(MethodImplOptions.AggressiveInlining)] get => _array.Count(); } public int capacity { [MethodImpl(MethodImplOptions.AggressiveInlining)] get => _array.Capacity(); } public ref T this[int index] { [MethodImpl(MethodImplOptions.AggressiveInlining)] get => ref _array.Get((uint) index); } public ref T this[uint index] { [MethodImpl(MethodImplOptions.AggressiveInlining)] get => ref _array.Get(index); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(in T id) { _array.Add(id); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void UnorderedRemoveAt(uint index) { _array.UnorderedRemoveAt(index); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void RemoveAt(uint index) { _array.RemoveAt(index); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Clear() { _array.FastClear(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Dispose() { _array.Dispose(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public ref T AddAt(uint lastIndex) { return ref _array.AddAt(lastIndex); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Resize(uint newSize) { _array.Resize(newSize); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public NativeDynamicArray ToNativeArray() { return _array; } public bool isValid => _array.isValid; NativeDynamicArray _array; } }