private void PerformSpawn() { if (Time.time > _nextSpawnTime) { if (!_isInfinite) { _spawnCounter++; } _nextSpawnTime = Time.time + _spawnRate; SpawnedPooled spawnedObject = _spawnPool.Get(); IHealthContainer iHealthContainer = spawnedObject.GetComponent <IHealthContainer>(); if (iHealthContainer != null) { iHealthContainer.SetHP(_waveHp); } ISpeedContainer iSpeedContainer = spawnedObject.GetComponent <ISpeedContainer>(); if (iSpeedContainer != null) { iSpeedContainer.SetSpeed(_spawnedSpeed); } spawnedObject.Init(_spawnPool, _spawnedMaxLifeTime); if (_tracker) { spawnedObject.InitTracker(_tracker); } _spawnPool.ActivateObject(spawnedObject.gameObject); spawnedObject.transform.position = transform.position; Vector3 eulerRotaion = new Vector3( spawnedObject.transform.eulerAngles.x, _startYAngle, spawnedObject.transform.eulerAngles.z ); spawnedObject.transform.rotation = Quaternion.Euler(eulerRotaion); } }