public void FirstGeneration(AnimalSettings _animalSettings) { animalSettings = _animalSettings; GenerateAnimal(animalSettings); AddLODs(); }
public static void Spawn(MapGraph mapGraph, Transform container, AnimalSettings settings, int seed) { AnimalSpawner.mapGraph = mapGraph; AnimalSpawner.prng = new System.Random(seed); var spawner = new PrefabSpawner(container); settings.speciesSettings.ForEach(s => SpawnSpecies(spawner, s)); }
private void SpawnAnimals(AnimalType animal, int spawnCount) { AnimalSettings animalSettings = animalsSettings.Find(animSett => animSett.AnimalType == animal); if (animalSettings.SpawnType == SpawnType.Group && spawnCount >= animalSettings.MinCountInGroup) { List <int> groupCounts = new List <int>(); int i = spawnCount; while (i >= animalSettings.MinCountInGroup) { int newCount; if (i < 2 * animalSettings.MinCountInGroup) { newCount = i; } else { int maxCountPossible = Math.Min(i, animalSettings.MaxCountInGroup); if (animalSettings.MaxCountInGroup + animalSettings.MinCountInGroup > i) { newCount = animalSettings.MinCountInGroup; } else { newCount = rand.Next(maxCountPossible - animalSettings.MinCountInGroup) + animalSettings.MinCountInGroup; } } groupCounts.Add(newCount); i -= newCount; } List <Vector2> positionsOfNewGroups = GetRandomFreePoints(groupCounts.Count); for (int j = 0; j < groupCounts.Count; j++) { GameObject spawnedGroup = animalSettings.GroupPrefabs.Find(grPr => grPr.AnimalCount == groupCounts[j]).Prefab; foreach (Animal animalPrefab in spawnedGroup.GetComponentsInChildren <Animal>()) { InstantiateAnimal(positionsOfNewGroups[j] + (Vector2)animalPrefab.transform.position, animalPrefab, animalSettings.AnimalType); } } return; } List <Vector2> positionsOfNewAnimals = GetRandomFreePoints(spawnCount); foreach (Vector2 position in positionsOfNewAnimals) { InstantiateAnimal(position, animalSettings.Prefab, animalSettings.AnimalType); } }
void Start() { Debug.Log("New species arrived!"); animalType = (AnimalSettings.AnimalType)Mathf.RoundToInt(Random.Range(0f, 1f)); AnimalSettings animalSettings = new AnimalSettings(animalType, Random.Range(1, 4), new Vector3(1, 1, Random.Range(1.5f, 3.5f))); for (int i = 0; i < 5; i++) { CreateNewAnimal(animalSettings); } }
protected void GenerateAnimal(AnimalSettings _animalSettings) { animalSettings = _animalSettings; switch (animalSettings.animalType) { case AnimalSettings.AnimalType.Land: GenerateLandAnimal(); break; case AnimalSettings.AnimalType.Air: GenerateSkyAnimal(); break; default: break; } }
void CreateNewAnimal(AnimalSettings animalSettings) { Animal animalPrefabToSpawn = null; switch (animalSettings.animalType) { case AnimalSettings.AnimalType.Land: animalPrefabToSpawn = AnimalsManager.instance.landAnimalPrefab; break; case AnimalSettings.AnimalType.Air: animalPrefabToSpawn = AnimalsManager.instance.airAnimalPrefab; break; default: break; } GameObject newAnimal = Instantiate(animalPrefabToSpawn.gameObject); NavMeshAgent animalAgent = newAnimal.GetComponent <NavMeshAgent>(); if (animalAgent) { animalAgent.Warp(transform.position + new Vector3(0, 1, 0)); } else { newAnimal.transform.position = transform.position; } newAnimal.transform.SetParent(TerrainGenerator.instance.transform.parent); newAnimal.transform.localScale *= WorldGenerator.GetScaleMultiplier(); Animal animal = newAnimal.GetComponent <Animal>(); animal.FirstGeneration(animalSettings); animal.SetNest(this); animals.Add(animal); }