예제 #1
0
        private GameObject CreateExpernalDeviceCanvas(Util.Device device, GameObject panel)
        {
            var canvas = Instantiate(DeviceCanvas);

            canvas.name = device.Name + "_canvas";
            canvas.transform.Find("HiddenName").gameObject.GetComponent <Text>().text = device.Name;
            var content = canvas.transform.Find("Content");

            content.GetComponent <RectTransform>().sizeDelta      = new Vector2(content.GetComponent <RectTransform>().sizeDelta.x, panel.GetComponent <RectTransform>().sizeDelta.y + 10);
            panel.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, -5);
            panel.transform.Find("MoveBack").gameObject.GetComponent <Button>().interactable = true;
            panel.transform.Find("MoveBack").gameObject.GetComponent <Button>().onClick.AddListener(delegate
            {
                device.SetRotation(false);
                panel.SetActive(false);
                panel.transform.SetParent(Content.transform, false);
                _panelsList.Add(panel);
                panel.transform.Find("MoveBack").gameObject.GetComponent <Button>().onClick.RemoveAllListeners();
                panel.transform.Find("MoveBack").gameObject.GetComponent <Button>().interactable = false;
                device.IsPlaced = false;
                PanelBackClick(canvas);
            });
            panel.transform.Find("TapToPlaceButton").gameObject.GetComponent <Button>().onClick.RemoveAllListeners();
            panel.transform.Find("TapToPlaceButton").gameObject.GetComponent <Button>().onClick.AddListener(delegate
            {
                if (!device.IsPlaced)
                {
                    EventManager.Instance.RemoveDevice(device.GObject, device.Name);
                    device.SetRotation(true);
                    device.IsPlaced = true;
                    _panelsList.Remove(panel);
                    var newCanvas = CreateExpernalDeviceCanvas(device, panel);
                    PanelPlaceClick(newCanvas);
                }
                else
                {
                    PanelPlaceClick(canvas);
                }
            });
            panel.transform.SetParent(content.transform, false);
            //resize content
            var height = panel.GetComponent <RectTransform>().sizeDelta.y;
            var size   = canvas.GetComponent <RectTransform>().sizeDelta;

            canvas.GetComponent <RectTransform>().sizeDelta = new Vector2(size.x, height + 10);
            canvas.GetComponent <BoxCollider>().size        = new Vector2(size.x, height);
            canvas.transform.parent = transform.Find("/Objects");
            canvas.SetActive(true);
            return(canvas);
        }
예제 #2
0
        public void GetDeviceApiDescription(Util.Device device, Action <List <Util.ApiInfo>, bool> callback)
        {
            var url = string.Format("{0}{1}", device.Uri, device.Path);

            Get(url).SendWebRequest().completed += operation =>
            {
                var request = ((UnityWebRequestAsyncOperation)operation).webRequest;
                if (!isError(request))
                {
                    var list = JsonConvert.DeserializeObject <List <Util.ApiInfo> >(request.downloadHandler.text);
                    list.ForEach(r => r.GenerateUri(device.Uri));
                    callback(list, false);
                }
                else
                {
                    callback(null, false);
                }
            };
        }
예제 #3
0
        private GameObject CreatePanel(Util.Device device, string name)
        {
            var panel = Instantiate(DevicePanel);

            panel.name = name;
            panel.transform.Find("Text").GetComponent <Text>().text = device.Name;
            float width   = panel.GetComponent <RectTransform>().sizeDelta.x;
            float height  = 0;
            var   buttons = panel.transform.Find("Buttons").gameObject;

            if (!device.isUpdating)
            {
                foreach (var apiInfo in device.ApiInfoList)
                {
                    var actor = AddActor(apiInfo);
                    actor.transform.SetParent(buttons.transform, false);
                    actor.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, -5 - height);
                    height += 5 + actor.GetComponent <RectTransform>().sizeDelta.y;
                }
            }

            height += 5;
            buttons.GetComponent <RectTransform>().sizeDelta = new Vector2(buttons.GetComponent <RectTransform>().sizeDelta.x, height);

            if (device.ApiInfoList.Count == 0)
            {
                panel.GetComponent <Image>().color = Color.red;
                panel.transform.Find("TapToPlaceButton").GetComponent <Button>().interactable = false;
                var noresponse = Instantiate(NoResponseGameObject);
                height         += 5 + noresponse.GetComponent <RectTransform>().sizeDelta.y;
                noresponse.name = NoResponseGameObject.name;
                noresponse.transform.SetParent(panel.transform.Find("Buttons"), false);
                if (!device.isUpdating)
                {
                    device.GetApiInformation();
                }
            }

            panel.GetComponent <RectTransform>().sizeDelta = new Vector2(width, height + 5 + 25);

            return(panel);
        }
예제 #4
0
        private GameObject AddPanel(Util.Device device, string name)
        {
            var panel = CreatePanel(device, name);

            panel.transform.Find("TapToPlaceButton").gameObject.GetComponent <Button>().onClick.RemoveAllListeners();
            panel.transform.Find("TapToPlaceButton").gameObject.GetComponent <Button>().onClick.AddListener(delegate
            {
                if (!device.IsPlaced)
                {
                    EventManager.Instance.RemoveDevice(device.GObject, device.Name);
                    device.SetRotation(true);
                    device.IsPlaced = true;
                    _panelsList.Remove(panel);
                    var canvas = CreateExpernalDeviceCanvas(device, panel);
                    PanelPlaceClick(canvas);
                }
            });
            panel.transform.Find("MoveBack").gameObject.GetComponent <Button>().interactable = false;
            panel.transform.SetParent(Content.transform, false);
            _panelsList.Add(panel);
            return(panel);
        }