Mirror of Svelto.ECS because we're a fan of it
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

34 líneas
1.1KB

  1. #if UNITY_NATIVE //at the moment I am still considering NativeOperations useful only for Unity
  2. using Svelto.ECS.DataStructures;
  3. namespace Svelto.ECS.Native
  4. {
  5. public readonly ref struct NativeEntityInitializer
  6. {
  7. readonly NativeBag _unsafeBuffer;
  8. readonly UnsafeArrayIndex _index;
  9. readonly EntityReference _reference;
  10. public NativeEntityInitializer(in NativeBag unsafeBuffer, UnsafeArrayIndex index, EntityReference reference)
  11. {
  12. _unsafeBuffer = unsafeBuffer;
  13. _index = index;
  14. _reference = reference;
  15. }
  16. public void Init<T>(in T component) where T : unmanaged, IEntityComponent
  17. {
  18. uint id = EntityComponentID<T>.ID.Data;
  19. _unsafeBuffer.AccessReserved<uint>(_index)++; //number of components added so far
  20. //Since NativeEntityInitializer is a ref struct, it guarantees that I am enqueueing components of the
  21. //last entity built
  22. _unsafeBuffer.Enqueue(id);
  23. _unsafeBuffer.Enqueue(component);
  24. }
  25. public EntityReference reference => _reference;
  26. }
  27. }
  28. #endif