// Update is called once per frame void Update() { //set the building to mouse position Vector3 m = Input.mousePosition; m = new Vector3(m.x, m.y, transform.position.y); Vector3 p = camera.ScreenToWorldPoint(m); if (currentPump != null && !hasPlaced) { currentPump.position = p; if (Input.GetMouseButtonDown(0)) { if (IsLegalPosition()) { hasPlaced = true; } } } else { if (Input.GetMouseButtonDown(0)) { RaycastHit hit = new RaycastHit(); Ray ray = new Ray(p, Vector3.down); if (Physics.Raycast(ray, out hit, Mathf.Infinity, PumpsMask)) { if (placeablePumpOld != null) { placeablePumpOld.SetSelected(false); } hit.collider.gameObject.GetComponent <PlaceblePump>().SetSelected(true); placeablePumpOld = hit.collider.gameObject.GetComponent <PlaceblePump>(); } else { if (placeablePumpOld != null) { placeablePumpOld.SetSelected(false); } } } } }