TEXT   168

Untitled

Guest on 18th May 2022 04:03:59 PM

  1. void UMainGameplay_Inits::Initialize(flecs::world& ecs)
  2. {
  3.         ISM_Map ismMap{TMap<uint32, AISMController*>()};
  4.  
  5.  
  6.         for (auto team : Config->Teams)
  7.         {
  8.                 auto teamEntity = ecs.entity();
  9.  
  10.                 auto spaceshipHash = CreateISMController(World, team->SpaceshipType->Mesh, team->SpaceshipType->Material,
  11.                                                          ismMap);
  12.                 auto weaponHash = CreateISMController(World, team->SpaceshipType->Weapons->Mesh,
  13.                                                       team->SpaceshipType->Weapons->Material, ismMap);
  14.  
  15.                 auto projectilePrefab = ecs.prefab()
  16.                                            .set<ProjectileLifetime>({team->SpaceshipType->Weapons->Lifetime})
  17.                                            .add<ProjectileLifetime>()
  18.                                            .override<ProjectileInstance>();
  19.  
  20.                 if (team->SpaceshipType->Weapons->WeaponType != EWeaponType::Beam)
  21.                 {
  22.                         projectilePrefab.set<Speed>({team->SpaceshipType->Weapons->Speed});
  23.                 }
  24.  
  25.  
  26.                 auto spaceshipPrefab = ecs.prefab()
  27.                                           .set<SpaceshipWeaponData>({
  28.                                                   projectilePrefab, weaponHash,
  29.                                                   team->SpaceshipType->Weapons->WeaponType == EWeaponType::Beam,
  30.                                                   team->SpaceshipType->Weapons->ProjectileScale,
  31.                                                   team->SpaceshipType->Weapons->BeamMeshLength
  32.                                           })
  33.                                           .set<SpaceshipWeaponCooldownTime>({team->SpaceshipType->Weapons->Cooldown, 0.f})
  34.                                           .set<SpaceshipTarget>({flecs::entity::null()})
  35.                                           .set<Speed>({team->SpaceshipType->MaxSpeed})
  36.                                           .set<Transform>({FTransform(FVector::ZeroVector)})
  37.                                           .set<BattleTeam>({teamEntity})
  38.                                           .override<SpaceshipWeaponCooldownTime>()
  39.                                           .override<SpaceshipTarget>()
  40.                                           .override<Transform>()
  41.                                           .override<BoidInstance>();
  42.  
  43.                 ecs.entity().set<BatchInstanceAdding>(
  44.                         {team->NumShips, spaceshipHash, spaceshipPrefab});
  45.         }
  46.  
  47.         ecs.entity("Game")
  48.            .set<UWorldRef>({World})
  49.            .set<BoidSettings>({
  50.                    Config->SeparationWeight, Config->CohesionWeight, Config->AlignmentWeight, Config->CageAvoidWeight,
  51.                    Config->CellSize, Config->CageSize, Config->CageAvoidDistance
  52.            })
  53.            .set<GameSettings>({Config->SpawnRange, Config->ShootingCellSize})
  54.            .set<ISM_Map>(ismMap)
  55.            .set<TargetHashMap>({TMap<FIntVector, TArray<Data_TargetInstance>>{}});
  56.  
  57.         ecs.system<BatchInstanceAdding>()
  58.                 .term<ISM_Map>().subj("Game")
  59.                 .term<GameSettings>().subj("Game")
  60.                 .iter(SystemSpawnInstancesInRadius);
  61.  
  62.         ecs.system<Transform, ISM_Index, ISM_ControllerRef>()
  63.                 .iter(SystemCopyInstanceTransforms);
  64.        
  65.         ecs.system<>()
  66.                 .term<ISM_Map>().subj("Game")
  67.                 .iter(SystemUpdateTransformsInBatch);
  68.        
  69.         ecs.system<>()
  70.                 .term<Transform>()
  71.                 .term<Speed>().super()
  72.                 .term<ISM_Map>().subj("Game")
  73.                 .iter(SystemUpdateBoids);
  74. }

Raw Paste


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