protected void SpawnShape(GameSpawner spawner = null) { if (spawner == null) { int spawnerIndex = UnityEngine.Random.Range(0, spawners.Length); spawner = spawners[spawnerIndex]; } GameShapeType newShapeType = spawner.GetRandomShapeType(); GameShape shape = shapeController.CreateShape(newShapeType, spawner, speed, spawnSpeed); spawner.CurrentShapes++; shape.RegisterOnStateChanged(CallShapeStateChanged); if (onShapeCreated != null) { onShapeCreated(shape); } }