private void StartPlacement() { _placementObject = CreatePlacementObject(_placementIndex); if (_placementObject != null) { _placement.Cancel(); _placement.Place(_controllerConnectionHandler.transform, _placementObject.Volume, _placementObject.AllowHorizontal, _placementObject.AllowVertical, HandlePlacementComplete); } }
private PlacementObject CreatePlacementObject(int index = 0) { // Destroy previous preview instance if (_placementObject != null) { Destroy(_placementObject.gameObject); } // Create the next preview instance. if (_placementPrefabs != null && _placementPrefabs.Length > index) { GameObject previewObject = Instantiate(_placementPrefabs[index]); // Detect all children in the preview and set children to ignore raycast. Collider[] colliders = previewObject.GetComponents <Collider>(); for (int i = 0; i < colliders.Length; ++i) { colliders[i].enabled = false; } // Find the placement object. PlacementObject placementObject = previewObject.GetComponent <PlacementObject>(); if (placementObject == null) { Destroy(previewObject); Debug.LogError("Error: PlacementExample.placementObject is not set, disabling script."); enabled = false; } return(placementObject); } return(null); }