Mirror of Svelto.ECS because we're a fan of it
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
880B

  1. using Svelto.ECS.DataStructures;
  2. namespace Svelto.ECS.Native
  3. {
  4. public readonly ref struct NativeEntityInitializer
  5. {
  6. readonly NativeBag _unsafeBuffer;
  7. readonly UnsafeArrayIndex _index;
  8. readonly EntityReference _reference;
  9. public NativeEntityInitializer(in NativeBag unsafeBuffer, UnsafeArrayIndex index, EntityReference reference)
  10. {
  11. _unsafeBuffer = unsafeBuffer;
  12. _index = index;
  13. _reference = reference;
  14. }
  15. public void Init<T>(in T component) where T : unmanaged, IEntityComponent
  16. {
  17. uint id = EntityComponentID<T>.ID.Data;
  18. _unsafeBuffer.AccessReserved<uint>(_index)++;
  19. _unsafeBuffer.Enqueue(id);
  20. _unsafeBuffer.Enqueue(component);
  21. }
  22. public EntityReference reference => _reference;
  23. }
  24. }