Mirror of Svelto.ECS because we're a fan of it
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

82 satır
2.6KB

  1. using System;
  2. using System.Runtime.CompilerServices;
  3. using Svelto.Common;
  4. namespace Svelto.ECS.DataStructures
  5. {
  6. public struct NativeDynamicArrayCast<T>:IDisposable where T : struct
  7. {
  8. public NativeDynamicArrayCast(uint size, Allocator allocator)
  9. {
  10. _array = NativeDynamicArray.Alloc<T>(allocator, size);
  11. }
  12. public NativeDynamicArrayCast(NativeDynamicArray array) : this() { _array = array; }
  13. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  14. public int Count() => _array.Count<T>();
  15. public int count
  16. {
  17. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  18. get => _array.Count<T>();
  19. }
  20. public int capacity
  21. {
  22. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  23. get => _array.Capacity<T>();
  24. }
  25. public ref T this[int index]
  26. {
  27. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  28. get => ref _array.Get<T>((uint) index);
  29. }
  30. public ref T this[uint index]
  31. {
  32. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  33. get => ref _array.Get<T>(index);
  34. }
  35. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  36. public void Add(in T id) { _array.Add(id); }
  37. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  38. public void UnorderedRemoveAt(uint index) { _array.UnorderedRemoveAt<T>(index); }
  39. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  40. public void RemoveAt(uint index) { _array.RemoveAt<T>(index); }
  41. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  42. public void Clear() { _array.FastClear(); }
  43. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  44. public void Dispose() { _array.Dispose(); }
  45. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  46. public ref T AddAt(uint lastIndex) { return ref _array.AddAt<T>(lastIndex); }
  47. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  48. public void Resize(uint newSize) { _array.Resize<T>(newSize); }
  49. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  50. public NativeDynamicArray ToNativeArray() { return _array; }
  51. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  52. public void Set(uint index, in T value)
  53. {
  54. _array.Set(index, value);
  55. }
  56. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  57. public void Set(int index, in T value)
  58. {
  59. _array.Set((uint)index, value);
  60. }
  61. public bool isValid => _array.isValid;
  62. NativeDynamicArray _array;
  63. }
  64. }