public static Entity GenerateEntity(EntityManager entityManager, ProceduralGenerationSpawnData spawnData)
        {
            Entity entity = entityManager.CreateEntity();

            // ecb.addComponent(entity,new ProceduralGenerationElement(ecb, proceduralAreaEntity, spawnData.EntityPrefab));
            return(entity);
        }
        /// <summary>
        /// Generates Entities and returns them after creation using the given arguments
        /// </summary>
        /// <param name="entityManager"></param>
        /// <param name="proceduralAreaEntity">the entity that will house all the new;y created entities</param>
        /// <param name="spawnData"></param>
        /// <param name="entityPrefab"></param>
        /// <returns></returns>
        public static NativeArray <Entity> GenerateSpawnEntities(EntityManager entityManager, Entity proceduralAreaEntity, ref ProceduralGenerationSpawnData spawnData, GameObject entityPrefab, Allocator allocator)
        {
            NativeArray <Entity> entities = new NativeArray <Entity>(spawnData.Amount, allocator);

            entityManager.Instantiate(entityPrefab, entities);
            // since we used a gameobect we have to set the entity prefab
            spawnData.EntityPrefab = new EntityPrefab(entityManager, entityManager.Instantiate(entities[0]), new FixedString64(entityPrefab.name));
            foreach (Entity entity in entities)
            {
                entityManager.AddComponentData <ProceduralGenerationElement>(entity, new ProceduralGenerationElement(entityManager, proceduralAreaEntity, spawnData.EntityPrefab.Entity));
            }
            return(entities);
        }
        public static NativeArray <Entity> GenerateEntities(EntityCommandBuffer.ParallelWriter ecb, int jobIndex, Entity proceduralAreaEntity, ProceduralGenerationSpawnData spawnData, Allocator allocator)
        {
            NativeArray <Entity> entities = new NativeArray <Entity>(spawnData.Amount, allocator);

            foreach (Entity entity in entities)
            {
                ecb.AddComponent(jobIndex, entity, new ProceduralGenerationElement(ecb, jobIndex, proceduralAreaEntity, spawnData.EntityPrefab.Entity));
            }
            return(entities);
        }
        public static Entity GenerateEntity(EntityCommandBuffer.ParallelWriter ecb, int jobIndex, ProceduralGenerationSpawnData spawnData)
        {
            Entity entity = ecb.CreateEntity(jobIndex);

            // ecb.addComponent(entity,new ProceduralGenerationElement(ecb, proceduralAreaEntity, spawnData.EntityPrefab));
            return(entity);
        }
        // Spawn Data Generation

        public static NativeArray <Entity> GenerateEntities(EntityManager entityManager, Entity proceduralAreaEntity, ProceduralGenerationSpawnData spawnData, Allocator allocator)
        {
            NativeArray <Entity> entities = entityManager.Instantiate(spawnData.EntityPrefab.Entity, spawnData.Amount, allocator);

            foreach (Entity entity in entities)
            {
                entityManager.AddComponentData <ProceduralGenerationElement>(entity, new ProceduralGenerationElement(entityManager, proceduralAreaEntity, spawnData.EntityPrefab.Entity));
            }
            return(entities);
        }