/// <summary> /// Generates a foreground layer of objects at the start of each scenario iteration /// </summary> protected override void OnIterationStart() { var seed = scenario.NextRandomState(); var placementSamples = PoissonDiskSampling.GenerateSamples( placementArea.x, placementArea.y, separationDistance, seed); var offset = new Vector3(placementArea.x, placementArea.y, 0f) * -0.5f; foreach (var sample in placementSamples) { var instance = m_GameObjectOneWayCache.GetOrInstantiate(prefabs.Sample()); instance.transform.position = new Vector3(sample.x, sample.y, depth) + offset; } placementSamples.Dispose(); }
/// <summary> /// Generates a foreground layer of objects at the start of each scenario iteration /// </summary> protected override void OnIterationStart() { if (m_SpawnedObjects == null) { m_SpawnedObjects = new List <GameObject>(); } var seed = scenario.GenerateRandomSeed(); var placementSamples = PoissonDiskSampling.GenerateSamples( placementArea.x, placementArea.y, separationDistance, seed); var offset = new Vector3(placementArea.x, placementArea.y, 0f) * -0.5f; var parent = scenario.transform; foreach (var sample in placementSamples) { var instance = Object.Instantiate(prefabs.Sample(), parent); instance.transform.position = new Vector3(sample.x, sample.y, depth) + offset; m_SpawnedObjects.Add(instance); } placementSamples.Dispose(); }