private void PlacingMode() { levelManager.GetLevelCamera().SetRotationLock(true); if (OverUI()) { return; } interactionRay = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(interactionRay, out hitInfo)) { if (string.CompareOrdinal(hitInfo.collider.gameObject.tag, "Tile") == 0) { placedOnTile = hitInfo.collider.gameObject.GetComponent <Tile>(); if (!objectGhost.activeSelf) { objectGhost.SetActive(true); } objectGhost.transform.position = hitInfo.collider.transform.position; if (Input.GetMouseButtonDown(0)) { if (objectGhost.GetComponentInChildren <ObjectGhost>().IsPlaceable()) { NullSelectedObject(); placingObject.GetComponent <Animator>().SetBool("Placing", false); if (economyManager.CheckCanAfford(ObjectToPlace.BuyCost)) { GameObject temp = InstantiateNewObject(ObjectToPlace, hitInfo.collider.gameObject.transform.position, objectGhost.transform.rotation, placedOnTile); objectGhost.GetComponentInChildren <ObjectGhost>().OnPlaced(temp); ObjectToPlace = null; } } else { print("Something is blocking this tile!"); } } } else if (string.CompareOrdinal(hitInfo.collider.gameObject.tag, "Object") == 0) { if (hitInfo.collider.gameObject.name != "Top") { placedOnTile = GetNearestTile(hitInfo.collider); } if (!objectGhost.activeSelf) { objectGhost.SetActive(true); } objectGhost.transform.position = placedOnTile.transform.position; if (Input.GetMouseButtonDown(0)) { if (objectGhost.GetComponentInChildren <ObjectGhost>().IsPlaceable()) { NullSelectedObject(); if (economyManager.CheckCanAfford(ObjectToPlace.BuyCost)) { GameObject temp = InstantiateNewObject(ObjectToPlace, objectGhost.transform.position, objectGhost.transform.rotation, placedOnTile); objectGhost.GetComponentInChildren <ObjectGhost>().OnPlaced(temp); ObjectToPlace = null; } } } } else if (string.CompareOrdinal(hitInfo.collider.gameObject.tag, "Wall") == 0) { if (hitInfo.collider.gameObject.name != "Top") { placedOnTile = GetNearestTileWallVersion(hitInfo.collider); } if (!objectGhost.activeSelf) { objectGhost.SetActive(true); } objectGhost.transform.position = placedOnTile.transform.position; if (Input.GetMouseButtonDown(0)) { if (objectGhost.GetComponentInChildren <ObjectGhost>().IsPlaceable()) { NullSelectedObject(); if (economyManager.CheckCanAfford(ObjectToPlace.BuyCost)) { GameObject temp = InstantiateNewObject(ObjectToPlace, objectGhost.transform.position, objectGhost.transform.rotation, placedOnTile); objectGhost.GetComponentInChildren <ObjectGhost>().OnPlaced(temp); ObjectToPlace = null; } } } } else if (string.CompareOrdinal(hitInfo.collider.gameObject.tag, "Ghost") == 0) { print("Touching ghost! This shouldn't happen!"); } else { objectGhost.SetActive(false); objectGhost.gameObject.GetComponentInChildren <ObjectGhost>().ClearAll(); } } ObjectInteraction(); }