public GameObject createBlob(string point, string cube, string room) { ViewButtonController vbc = ViewButton.GetComponentInChildren <ViewButtonController>(); if (vbc.visibleObjects.Contains("sensor_" + point)) { return(GameObject.Find("sensor_" + point)); } float multiple = 0.0f; if (cube == "Cube3") //VAV { c = Cube3; multiple = -0.75f; } else if (cube == "Cube2") //Actuator { c = Cube2; multiple = -0.5f; } else if (cube == "Cube") //Sensor { c = Cube; multiple = -1.0f; } string obj = room.Replace("Room-", ""); Collider newObj = GameObject.Find(obj).GetComponent <Collider>(); Vector3 centreOfRoom = newObj.bounds.center; GameObject blob = Instantiate(c); blob.name = "sensor_" + point; blob.SetActive(true); List <Vector3> points = (List <Vector3>)pointsInRoom[room]; int i = 0; Vector3 pos = points[i]; while (relatedPointsOfRoom.Contains(pos) && i < 4) { i++; pos = points[i]; } if (i == 4) { blob.transform.position = centreOfRoom; } else { blob.transform.position = pos; } relatedPointsOfRoom.Add(pos); relatedPointsVisible.Add(blob.name); vbc.visibleObjects.Add(blob.name); return(blob); }
// Update is called once per frame void Update() { if (Input.GetButtonDown("Fire1")) //&& Panel.activeSelf == false { GameObject cachedObj = null; string cachedName = ""; if (hit.collider != null) { cachedObj = hit.collider.gameObject; cachedName = hit.collider.gameObject.name; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { string element = hit.collider.gameObject.name; if (element != cachedName) { if (cachedObj != null && cachedObj.name.Contains("1-1-") && cachedObj.GetComponent <MeshRenderer>().material.color == HighlightMaterialSpace.color) { //Material mat= hit.collider.gameObject.GetComponent<MeshRenderer>().material; highlight(cachedObj, DefaultMaterialSpace); } ViewButtonController vbc = ViewButton.GetComponentInChildren <ViewButtonController>(); ring.SetActive(false); brickBox.gameObject.SetActive(false); dataBox.gameObject.SetActive(false); UnityEngine.Debug.Log("Click " + Input.mousePosition); UnityEngine.Debug.Log("object " + element); //.transform.position); //This code is to not remove the point that was clicked on and remove all visible points List <string> addVisiblePointsBack = new List <string>(); List <Vector3> addRoomPointsBack = new List <Vector3>(); for (int i = 0; i < relatedPointsVisible.Count; i++) { string elem = relatedPointsVisible[i]; if (elem.Contains(hit.collider.gameObject.name) || hit.collider.gameObject.name.Contains(elem)) { addVisiblePointsBack.Add(elem); addRoomPointsBack.Add(hit.collider.gameObject.transform.position); } else { UnityEngine.Debug.Log("Removing " + elem); GameObject ob = GameObject.Find(elem); Destroy(ob); vbc.visibleObjects.Remove(elem); UnityEngine.Debug.Log("does object exist? " + ob); } } relatedPointsOfRoom.Clear(); relatedPointsVisible.Clear(); relatedPointsOfRoom.AddRange(addRoomPointsBack); relatedPointsVisible.AddRange(addVisiblePointsBack); if (element.Contains("1-1-")) { if (hit.collider.gameObject.GetComponent <MeshRenderer>().material.color == DefaultMaterialSpace.color) { highlight(hit.collider.gameObject, HighlightMaterialSpace); } showBrickData(element, Input.mousePosition, hit.collider.gameObject.GetComponent <MeshRenderer>().material.color); } else if (element.Contains("sensor_")) { ring.SetActive(true); ring.transform.position = hit.collider.gameObject.transform.position; showData(hit.collider.gameObject.name, Input.mousePosition); } } } } }