AwesomeRunner/Assets/Scripts/Road/ChunkSpawner.cs
VladimirPirozhenko c7a0ad0f90 Added obstacles, started working on chunk generator
Added obstacles, updated pools, added extention for list, updated LaneSystem
2022-08-09 04:43:03 +03:00

56 lines
1.3 KiB
C#

using System;
using System.Collections;
using UnityEngine;
public class ChunkSpawner : MonoBehaviour // TODO: ISpawner
{
[SerializeField] [Range(1, 100)] private int chunkCount;
[SerializeField] private float spawnDelay;
[SerializeField] private ChunkGenerator chunkGenerator;
[SerializeField] private ChunkPool chunkPool;
private Chunk lastChunk;
private WaitForSeconds waitBeforeSpawn;
private void Start()
{
waitBeforeSpawn = new WaitForSeconds(spawnDelay);
SpawnInitialChunks();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.S))
Spawn();
}
public void SpawnInitialChunks()
{
lastChunk = chunkPool.GetFromPool();
for (int i = 0; i < chunkPool.Capacity / 2; i++)
{
Spawn();
}
}
public void Spawn()
{
Chunk newChunk = chunkPool.GetFromPool();
newChunk.ChangeTransformBasedOnPreviousChunk(lastChunk);
chunkGenerator.Generate(newChunk);
lastChunk = newChunk;
}
public void DelayedReturnToPool(Chunk chunk)
{
StartCoroutine(ReturnToPool(chunk));
}
public IEnumerator ReturnToPool(Chunk chunk) //EVENT
{
yield return waitBeforeSpawn;
chunkPool.ReturnToPool(chunk);
}
}