// Update is called once per frame void Update() { if (mode == MouseMode.Normal) { lastMousePos = Input.mousePosition; Ray ray; RaycastHit rayHit; ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) { if (Physics.Raycast(ray, out rayHit) && rayHit.collider.transform.tag.Contains("Interactable")) { if (lastHit != null) { lastHit.GetComponent <MeshRenderer>().material.color = Color.white; } lastHitTag = rayHit.collider.transform.tag; lastHit = rayHit.transform; Material lastHitMat = lastHit.GetComponent <MeshRenderer>().material; lastHitMat.color = Color.white; //Set Inspect UI ui.SetInspect(lastHit.name); if (lastHitTag.Contains("Floor")) { floorGrid.HighlightUV((int)(hitpos.x + 0.5f), (int)(hitpos.z + 0.5f), Color.white); hitpos = rayHit.point; floorGrid.HighlightUV((int)(hitpos.x + 0.5f), (int)(hitpos.z + 0.5f), Color.cyan); } else //if it wasnt a floorboard { lastHitMat.color = Color.cyan; floorGrid.HighlightUV((int)(hitpos.x + 0.5f), (int)(hitpos.z + 0.5f), Color.white); } } else if (lastHit != null) { ui.HideSubMenus(); if (lastHitTag.Contains("Floor")) { floorGrid.HighlightUV((int)(hitpos.x + 0.5f), (int)(hitpos.z + 0.5f), Color.white); } else //if it wasnt a floorboard { Material lastHitMat = lastHit.GetComponent <MeshRenderer>().material; lastHitMat.color = Color.white; floorGrid.HighlightUV((int)(hitpos.x + 0.5f), (int)(hitpos.z + 0.5f), Color.white); } } } } else if (mode == MouseMode.Build) { //Do build stuff } }