CPP   50

FLECS system builder bug

Guest on 19th May 2022 09:25:45 AM

  1. //.h
  2. struct CompA
  3. {
  4.         float value;
  5. };
  6.  
  7. struct CompB
  8. {
  9.         float value;
  10. };
  11.  
  12. struct Spawner
  13. {
  14.         flecs::entity Prefab;
  15. };
  16.  
  17. struct SuperCompA
  18. {
  19.         float Value;
  20. };
  21.  
  22. UCLASS()
  23. class ECSGAMEPLAY_API UFLECS_Test : public UFlecsModuleBase
  24. {
  25.         GENERATED_BODY()
  26.  
  27.         virtual void Initialize(flecs::world& world) override;
  28. };
  29.  
  30. //.cpp
  31. void Spawn(flecs::iter& It)
  32. {
  33.         auto world = It.world();
  34.         auto spawner = It.term<Spawner>(1);
  35.  
  36.         for (auto i : It)
  37.         {
  38.                 world.entity()
  39.                         .is_a(spawner->Prefab)
  40.                         .set<SuperCompA>({3.f});
  41.                
  42.                 It.entity(i).destruct();
  43.         }
  44. }
  45.  
  46. void GameUpdate(flecs::iter& It)
  47. {
  48. }
  49.  
  50. void UFLECS_Test::Initialize(flecs::world& world)
  51. {
  52.         world.component<CompA>();
  53.         world.component<CompB>();
  54.         world.component<Spawner>();
  55.         world.component<SuperCompA>();
  56.        
  57.         world.entity("Game")
  58.                 .set<CompA>({})
  59.                 .set<CompB>({});
  60.  
  61.         auto spaceshipPrefab = world.prefab()
  62.                 .set<SuperCompA>({});
  63.  
  64.         world.entity().set<Spawner>(
  65.                         {spaceshipPrefab});
  66.        
  67.         world.system<Spawner>()
  68.                 .iter(Spawn);
  69.        
  70.         world.system<>()
  71.                 .term<CompB>().subj("Game")
  72.                 .term<SuperCompA>().super()
  73.                 .iter(GameUpdate);
  74. }

Raw Paste


Login or Register to edit or fork this paste. It's free.