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);
                    }
                }
            }
        }
    }