private void onWindowSelfDeactivate(WindowPanelBase wpb) { var i = panels.IndexOf(wpb); if (selectedIndex == i) { selectedIndex = -1; } }
void Update() { if (selectedIndex != -1) { var rt = panels.ElementAt(selectedIndex).GetComponent <RectTransform>(); if (rt.sizeDelta != rectTransform.sizeDelta) { rectTransform.sizeDelta = rt.sizeDelta; } if (!Panel.GetComponent <Image>().enabled) { Panel.GetComponent <Image>().enabled = true; } if (!GetComponent <Image>().enabled) { GetComponent <Image>().enabled = true; } Panel.GetComponent <Image>().color = panels.ElementAt(selectedIndex).BackgroundColor; } if (selectedIndex == -1) { if (GetComponent <Image>().enabled) { GetComponent <Image>().enabled = false; } if (Panel.GetComponent <Image>().enabled) { Panel.GetComponent <Image>().enabled = false; } } if (EscapeMenuScript.GetFirstOpenWindow() == UIWindow.CustomWindow) { if (Input.GetMouseButtonUp(0)) { followMouse = false; } var pe = new PointerEventData(EventSystem.current) { position = Input.mousePosition }; var hits = new List <RaycastResult>(); Raycaster.Raycast(pe, hits); WindowPanelBase hit = null; hits.ForEach(res => hit = res.gameObject.GetComponentInParent <WindowPanelBase>() ?? hit); if (hit != null && panels.Contains(hit)) { if (Input.GetMouseButtonDown(0)) { followMouse = true; } } if (followMouse) { var mouseDelta = Input.mousePosition - lastMousePos; Panel.transform.localPosition = panels[selectedIndex].Position += mouseDelta; } } lastMousePos = Input.mousePosition; }