public void PlacePrefab() { for (int p = 0; p < _prefabs.Count; p++) { var pos = transform.TransformPoint(_prefabs[p].RootPosition); //if (dungeon != null) { // var gridPosition = MathUtils.ToIntVector(pos); // if (dungeon.Model.GetGridCellLookup(gridPosition.x, gridPosition.z).ContainsDoor) { // continue; // } //} for (int c = 0; c < _prefabs[p].ChildPositions.Length; c++) { var newPrefab = ItemPool.Spawn(_prefabs[p].Prefab, pos + _prefabs[p].ChildPositions[c], Quaternion.Euler(_prefabs[p].Rotation), true, true); var nested = newPrefab.GetComponent <NestedPrefab>(); if (nested != null) { nested.transform.localScale = Vector3.one; nested.PlacePrefab(); ItemPool.Despawn(nested.gameObject); } } } }