public SpawnedObjectController SpawnAsController(GameObject prefab, Vector3 pos, Quaternion rot, Transform par = null, System.Action <GameObject> initializeProperties = null) { if (_spawnPoint == null) { throw new System.InvalidOperationException("SpawnerMechanism must be initialized before calling Spawn."); } if (!_active) { return(null); } if (prefab == null) { return(null); } using (var modifiers = TempCollection.GetList <ISpawnerModifier>()) { SpawnPointHelper.GetSpawnModifiers(_spawnPoint, modifiers); if (SpawnPointHelper.SignalOnBeforeSpawnNotification(_spawnPoint, prefab, modifiers)) { return(null); } //perform actual spawn var controller = this.SpawnPool.SpawnAsController(prefab, pos, rot, par, initializeProperties, _spawnPoint); if (controller == null) { return(null); } _spawnedObjects.Add(controller); _totalCount++; //end actual spawn SpawnPointHelper.SignalOnSpawnedNotification(_spawnPoint, this.SpawnPool, controller.gameObject, modifiers); return(controller); } }