protected override void OnCreate( )
        {
            Debug.LogWarning("Genetic Neural Network example manager started.");

            becb = World.GetOrCreateSystem <BeginInitializationEntityCommandBufferSystem> ();
            eecb = World.GetOrCreateSystem <EndInitializationEntityCommandBufferSystem> ();

            em = World.EntityManager;

            group_MMMamager = EntityManager.CreateEntityQuery
                              (
                ComponentType.ReadOnly <IsAliveTag> (),
                ComponentType.ReadOnly <NNManagerComponent> (),

                ComponentType.Exclude <NNMangerIsSpawningNewGenerationTag> ()
                              );


            group_MMMamagerNotYetActive = EntityManager.CreateEntityQuery
                                          (
                ComponentType.ReadOnly <IsInitializedTag> (),
                ComponentType.ReadOnly <NNManagerComponent> (),


                ComponentType.Exclude <IsAliveTag> ()
                                          );


            group_prefabs = EntityManager.CreateEntityQuery
                            (
                ComponentType.ReadOnly <SpawnerPrefabs_FromEntityData> ()
                            );

            group_carSpawnerPoint = EntityManager.CreateEntityQuery
                                    (
                ComponentType.ReadOnly <CarSpawnerTag> ()
                                    );

            group_allPopulation = EntityManager.CreateEntityQuery
                                  (
                ComponentType.ReadOnly <NNBrainTag> (),

                ComponentType.ReadWrite <NNManagerSharedComponent> ()
                                  );

            group_firstPopulation = EntityManager.CreateEntityQuery
                                    (
                ComponentType.ReadOnly <IsAliveTag> (),

                ComponentType.ReadOnly <NNBrainTag> (),
                ComponentType.ReadOnly <NNIsFirstGenerationTag> (),

                ComponentType.ReadWrite <NNManagerSharedComponent> ()
                                    );

            group_need2InitializePopulation = EntityManager.CreateEntityQuery
                                              (
                // ComponentType.ReadOnly <NNIsFinishedTag> (), ...

                ComponentType.ReadOnly <NNBrainTag> (),

                ComponentType.Exclude <IsAliveTag> (),
                ComponentType.Exclude <IsSpawningTag> (),
                ComponentType.Exclude <NNIsPreviousGenerationTag> (),

                ComponentType.ReadWrite <NNManagerSharedComponent> ()
                                              );

            group_currentPopulation = EntityManager.CreateEntityQuery
                                      (
                ComponentType.ReadOnly <IsAliveTag> (),
                // ComponentType.ReadOnly <NNIsFinishedTag> (), ...

                ComponentType.ReadOnly <NNBrainTag> (),
                ComponentType.Exclude <NNIsPreviousGenerationTag> (),

                ComponentType.ReadWrite <NNManagerSharedComponent> ()
                                      );

            group_finishedPopulation = EntityManager.CreateEntityQuery
                                       (
                ComponentType.ReadOnly <IsAliveTag> (),
                // ComponentType.ReadOnly <NNIsFinishedTag> (), ...

                ComponentType.ReadOnly <NNBrainTag> (),
                ComponentType.ReadOnly <NNIsFinishedTag> (),
                // ComponentType.ReadOnly <NNIsFinishedTag> (),
                ComponentType.Exclude <NNIsPreviousGenerationTag> (),
                ComponentType.Exclude <NNIsFirstGenerationTag> (),

                ComponentType.ReadWrite <NNManagerSharedComponent> ()
                                       );

            group_previousGeneration = EntityManager.CreateEntityQuery
                                       (
                ComponentType.ReadOnly <IsAliveTag> (),
                // ComponentType.ReadOnly <NNIsFinishedTag> (),

                ComponentType.ReadOnly <NNBrainTag> (),
                ComponentType.ReadOnly <NNIsPreviousGenerationTag> (),

                ComponentType.ReadWrite <NNManagerSharedComponent> ()
                                       );


            _DefineLayersNuronsCount(ref layersNeuronCounts);

            random = new Unity.Mathematics.Random((uint)System.DateTime.UtcNow.Millisecond + 5000);

            jsonNeuralNetworkMangers = new ManagerMethods.JsonNeuralNetworkMangers();
        }
 static private void _ExecuteActiveManager(SystemBase systemBase, JobHandle jobHandle, ref EntityManager em, ref BeginInitializationEntityCommandBufferSystem becb, ref EndInitializationEntityCommandBufferSystem eecb, ref Unity.Mathematics.Random random, ref List <NNManagerSharedComponent> l_managerSharedData, ref ManagerMethods.JsonNeuralNetworkMangers jsonNeuralNetworkMangers, in string s_path, in SpawnerPrefabs_FromEntityData spawner, in EntityQuery group_MMMamager, in EntityQuery group_carSpawnerPoint, in EntityQuery group_finishedPopulation, in EntityQuery group_allPopulation, in EntityQuery group_firstPopulation, in EntityQuery group_previousGeneration, in EntityQuery group_currentPopulation, in EntityQuery group_need2InitializePopulation, LayersNeuronCounts layersNeuronCounts)