void MakeUI() { float width = 100f; float height = 150f; UISystem = UIUtility.CreateNewUISystem("NeckLookModCanvas"); UISystem.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale, 1080f / UIScale); UISystem.gameObject.SetActive(false); var mainPanel = UIUtility.CreatePanel("Panel", UISystem.transform); mainPanel.color = backgroundColor; mainPanel.transform.SetRect(0.9f, 0.15f, 0.9f, 0.15f, -width, -height, width, height); UIUtility.AddOutlineToObject(mainPanel.transform, outlineColor); var drag = UIUtility.CreatePanel("Draggable", mainPanel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = dragColor; UIUtility.MakeObjectDraggable(drag.rectTransform, mainPanel.rectTransform); var nametext = UIUtility.CreateText("Nametext", drag.transform, "NeckLookMod"); nametext.transform.SetRect(0f, 0f, 1f, 1f); nametext.alignment = TextAnchor.MiddleCenter; var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -10f * 2f); close.onClick.AddListener(() => UISystem.gameObject.SetActive(false)); AddCloseSymbol(close); var choose = UIUtility.CreateButton("TargetButton", mainPanel.transform, "NoTarget"); choose.transform.SetRect(0.2f, 0.83f, 0.8f, 0.93f); choose.onClick.AddListener(() => { //target = GetClosestChara(Studio.Studio.Instance.cameraCtrl.targetPos); target = GetActiveChara().charInfo; choose.GetComponentInChildren <Text>().text = target.customInfo.name; }); { var head = UIUtility.CreateButton("HeadButton", mainPanel.transform, "Eyes"); head.transform.SetRect(0.3f, 0.7f, 0.7f, 0.8f); head.onClick.AddListener(() => SetTarget(target, "_J_NoseBridge_t")); var chest = UIUtility.CreateButton("ChestButton", mainPanel.transform, "Chest"); chest.transform.SetRect(0.3f, 0.6f, 0.7f, 0.7f); chest.onClick.AddListener(() => SetTarget(target, "_J_Mune00")); var crotch = UIUtility.CreateButton("CrotchButton", mainPanel.transform, "Crotch"); crotch.transform.SetRect(0.3f, 0.5f, 0.7f, 0.6f); crotch.onClick.AddListener(() => SetTarget(target, "_J_Kokan")); } }
void ModMenuUI() { int itemLimit = 10; float width = 200f / 2f; string[] files = Directory.GetFiles(Environment.CurrentDirectory + menuFolder, "*.xml", SearchOption.TopDirectoryOnly); float height = (elementSize * Mathf.Clamp(files.Length, 1, itemLimit) + headerSize + marginSizeBig) / 2f; UISystem = UIUtility.CreateNewUISystem("ModSettingsMenuCanvas"); UISystem.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale, 1080f / UIScale); UISystem.gameObject.SetActive(false); var panel = UIUtility.CreatePanel("Panel", UISystem.transform); panel.transform.SetRect(1f, 0.4f, 1f, 0.4f, -width * 3f, -height, -width, height); panel.color = backgroundColor; UIUtility.AddOutlineToObject(panel.transform, outlineColor); var modlist = UIUtility.CreateScrollView("Modlist", panel.transform); modlist.transform.SetRect(0f, 0f, 1f, 1f, marginSizeBig, marginSizeBig, -marginSizeBig, -headerSize); modlist.gameObject.AddComponent <Mask>(); modlist.content.gameObject.AddComponent <VerticalLayoutGroup>(); modlist.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; modlist.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); modlist.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); modlist.movementType = ScrollRect.MovementType.Clamped; modlist.scrollSensitivity = elementSize; var drag = UIUtility.CreatePanel("Draggable", panel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = dragColor; UIUtility.MakeObjectDraggable(drag.rectTransform, panel.rectTransform); var nametext = UIUtility.CreateText("Nametext", drag.transform, "Mod Settings"); nametext.transform.SetRect(0f, 0f, 1f, 1f); nametext.alignment = TextAnchor.MiddleCenter; nametext.resizeTextMinSize = 10; nametext.resizeTextMaxSize = 16; var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -buttonSize * 2f); close.onClick.AddListener(() => UISystem.gameObject.SetActive(false)); AddCloseSymbol(close); var images = new List <Image>(); for (int i = 0; i < files.Length; i++) { ModInfo modinfo = new ModInfo(files[i]); Image image = CreateSettingsUI(panel.transform, modinfo); images.Add(image); var button = UIUtility.CreateButton("Button", modlist.content.transform, modinfo.Name); button.gameObject.AddComponent <LayoutElement>().preferredHeight = elementSize; button.transform.SetRect(0f, 0f, 1f, 1f, marginSizeSmall, marginSizeSmall, -marginSizeSmall, -marginSizeSmall); button.onClick.AddListener(() => { if (image.gameObject.activeSelf) { image.gameObject.SetActive(false); } else { foreach (var item in images) { item.gameObject.SetActive(false); } image.gameObject.SetActive(true); } }); var text = button.gameObject.GetComponentInChildren <Text>(true); text.resizeTextMinSize = 10; text.resizeTextMaxSize = 18; text.color = Color.black; } }
Image CreateSettingsUI(Transform parent, ModInfo modinfo) { int itemlimit = 15; float width = 360f; float height = elementSize * Mathf.Clamp(modinfo.settings.Count, 1, itemlimit) + headerSize + marginSizeBig; var panel = UIUtility.CreatePanel("Panel", parent.transform); panel.gameObject.SetActive(false); panel.color = backgroundColor; panel.rectTransform.SetRect(0f, 1f, 0f, 1f, -width, -height, 0f, 0f); UIUtility.AddOutlineToObject(panel.transform, outlineColor); var optionlist = UIUtility.CreateScrollView("Optionlist", panel.transform); optionlist.transform.SetRect(0f, 0f, 1f, 1f, marginSizeBig, marginSizeBig, -marginSizeBig, -headerSize); optionlist.gameObject.AddComponent <Mask>(); optionlist.content.gameObject.AddComponent <VerticalLayoutGroup>(); optionlist.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; optionlist.scrollSensitivity = elementSize; optionlist.movementType = ScrollRect.MovementType.Clamped; optionlist.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); optionlist.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); var drag = UIUtility.CreatePanel("Draggable", panel.transform); drag.rectTransform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = dragColor; UIUtility.MakeObjectDraggable(drag.rectTransform, parent as RectTransform); var nametext = UIUtility.CreateText("Nametext", drag.transform, modinfo.Name); nametext.transform.SetRect(0f, 0f, 1f, 1f, 100f, 0f, -buttonSize * 2f); nametext.alignment = TextAnchor.MiddleCenter; nametext.resizeTextMinSize = 10; nametext.resizeTextMaxSize = 16; var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -buttonSize * 2f); close.onClick.AddListener(() => panel.gameObject.SetActive(false)); AddCloseSymbol(close); var apply = UIUtility.CreateButton("ApplyButton", drag.transform, "Apply"); apply.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 50f); apply.onClick.AddListener(() => { foreach (var item in changes[modinfo.IniName]) { Console.WriteLine(modinfo.IniName + " " + item.Key + " " + item.Value); ModPrefs.SetString(modinfo.IniName, item.Key, item.Value); } changes[modinfo.IniName] = new Dictionary <string, string>(); if (modinfo.MethodPath != null) { var returnval = InvokePluginMethod(modinfo.TypeName, modinfo.Invoke); bool updated = returnval != null && returnval is bool && (bool)returnval == true; Console.WriteLine("{0} settings {1}updated", modinfo.Name, updated ? "" : "may not have been "); } else { Console.WriteLine("{0} settings not updated", modinfo.Name); } }); var presetbutton = UIUtility.CreateButton("PresetButton", drag.transform, "Preset"); presetbutton.transform.SetRect(0f, 0f, 0f, 1f, 50f, 0f, 100f); if (modinfo.presets.Count > 0) { float elementsize = 20f; float listmargin = 4f; int scrollLimit = 5; float listwidth = 120f / 2f; float listheight = Mathf.Clamp(modinfo.presets.Count, 1, scrollLimit) * elementsize + listmargin; var presetbg = UIUtility.CreatePanel("PresetBackground", presetbutton.transform); presetbg.gameObject.SetActive(false); presetbg.transform.SetRect(0.5f, 0f, 0.5f, 0f, -listwidth, -listheight, listwidth, 0f); presetbg.color = backgroundColor; UIUtility.AddOutlineToObject(presetbg.transform, outlineColor); presetbutton.onClick.AddListener(() => { presetbg.gameObject.SetActive(!presetbg.gameObject.activeSelf); // CHECK FOR NEW PRESET FILES HERE OR WHEN OPENING MOD SPECIFIC MENU }); var presetlist = UIUtility.CreateScrollView("PresetList", presetbg.transform); presetlist.transform.SetRect(0f, 0f, 1f, 1f, marginSizeSmall, marginSizeSmall, -marginSizeSmall, -marginSizeSmall); presetlist.gameObject.AddComponent <Mask>(); presetlist.content.gameObject.AddComponent <VerticalLayoutGroup>(); presetlist.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; presetlist.scrollSensitivity = elementSize; presetlist.movementType = ScrollRect.MovementType.Clamped; presetlist.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); presetlist.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); foreach (var preset in modinfo.presets) { var button = UIUtility.CreateButton(preset.Name, presetlist.content.transform, preset.Name); button.transform.SetRect(0f, 0f, 1f, 1f); button.gameObject.AddComponent <LayoutElement>().preferredHeight = elementsize; button.onClick.AddListener(() => { foreach (var setting in preset.PresetSettings) { ModPrefs.SetString(modinfo.IniName, setting.Setting, setting.Value); } foreach (var item in optionlist.content.GetComponentsInChildren <Image>()) { Destroy(item.gameObject); } changes[modinfo.IniName] = new Dictionary <string, string>(); CreateOptions(optionlist, modinfo); }); } } else { presetbutton.interactable = false; } changes[modinfo.IniName] = new Dictionary <string, string>(); CreateOptions(optionlist, modinfo); return(panel); }
protected void InitUI() { if (ContextMenu != null) { return; } if (CustomBase.Instance == null) { return; } UIUtility.Init(nameof(KK_Plugins)); ContextMenu = UIUtility.CreateNewUISystem("ContextMenu"); ContextMenu.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f, 1080f); ContextMenu.transform.SetParent(CustomBase.Instance.transform); ContextMenu.sortingOrder = 900; ContextMenuCanvasGroup = ContextMenu.GetOrAddComponent <CanvasGroup>(); SetMenuVisibility(false); ContextMenuPanel = UIUtility.CreatePanel("Panel", ContextMenu.transform); ContextMenuPanel.color = new Color(0.5f, 0.5f, 0.5f, 0.5f); ContextMenuPanel.transform.SetRect(0.05f, 0.05f, UIWidth, UIHeight); UIUtility.AddOutlineToObject(ContextMenuPanel.transform, Color.black); var scrollRect = UIUtility.CreateScrollView("ContextMenuWindow", ContextMenuPanel.transform); scrollRect.transform.SetRect(0f, 0f, 1f, 1f, marginSize, marginSize, 0.5f - marginSize, -marginSize); scrollRect.gameObject.AddComponent <Mask>(); scrollRect.content.gameObject.AddComponent <VerticalLayoutGroup>(); scrollRect.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; scrollRect.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); scrollRect.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); scrollRect.movementType = ScrollRect.MovementType.Clamped; scrollRect.GetComponent <Image>().color = rowColor; { var contentItem = UIUtility.CreatePanel("BlacklistContent", scrollRect.content.transform); contentItem.gameObject.AddComponent <LayoutElement>().preferredHeight = panelHeight; contentItem.gameObject.AddComponent <Mask>(); contentItem.color = rowColor; var itemPanel = UIUtility.CreatePanel("BlacklistPanel", contentItem.transform); itemPanel.color = rowColor; itemPanel.gameObject.AddComponent <CanvasGroup>(); itemPanel.gameObject.AddComponent <HorizontalLayoutGroup>().padding = padding; BlacklistButton = UIUtility.CreateButton("BlacklistButton", itemPanel.transform, "Hide this item"); BlacklistButton.gameObject.AddComponent <LayoutElement>(); var text = BlacklistButton.GetComponentInChildren <Text>(); text.resizeTextForBestFit = false; text.fontSize = 26; } { var contentItem = UIUtility.CreatePanel("BlacklistModContent", scrollRect.content.transform); contentItem.gameObject.AddComponent <LayoutElement>().preferredHeight = panelHeight; contentItem.gameObject.AddComponent <Mask>(); contentItem.color = rowColor; var itemPanel = UIUtility.CreatePanel("BlacklistModPanel", contentItem.transform); itemPanel.color = rowColor; itemPanel.gameObject.AddComponent <CanvasGroup>(); itemPanel.gameObject.AddComponent <HorizontalLayoutGroup>().padding = padding; BlacklistModButton = UIUtility.CreateButton("BlacklistModButton", itemPanel.transform, "Hide all items from this mod"); BlacklistModButton.gameObject.AddComponent <LayoutElement>(); var text = BlacklistModButton.GetComponentInChildren <Text>(); text.resizeTextForBestFit = false; text.fontSize = 26; } { var contentItem = UIUtility.CreatePanel("InfoContent", scrollRect.content.transform); contentItem.gameObject.AddComponent <LayoutElement>().preferredHeight = panelHeight; contentItem.gameObject.AddComponent <Mask>(); contentItem.color = rowColor; var itemPanel = UIUtility.CreatePanel("InfoPanel", contentItem.transform); itemPanel.color = rowColor; itemPanel.gameObject.AddComponent <CanvasGroup>(); itemPanel.gameObject.AddComponent <HorizontalLayoutGroup>().padding = padding; InfoButton = UIUtility.CreateButton("InfoButton", itemPanel.transform, "Print item info"); InfoButton.gameObject.AddComponent <LayoutElement>(); var text = InfoButton.GetComponentInChildren <Text>(); text.resizeTextForBestFit = false; text.fontSize = 26; } { var contentItem = UIUtility.CreatePanel("FilterContent", scrollRect.content.transform); contentItem.gameObject.AddComponent <LayoutElement>().preferredHeight = panelHeight; contentItem.gameObject.AddComponent <Mask>(); contentItem.color = rowColor; var itemPanel = UIUtility.CreatePanel("FilterPanel", contentItem.transform); itemPanel.gameObject.AddComponent <CanvasGroup>(); itemPanel.gameObject.AddComponent <HorizontalLayoutGroup>().padding = padding; itemPanel.color = rowColor; var label = UIUtility.CreateText("FilterText", itemPanel.transform, "Displaying:"); label.color = Color.white; label.resizeTextForBestFit = false; label.fontSize = 26; label.alignment = TextAnchor.MiddleCenter; var labelLE = label.gameObject.AddComponent <LayoutElement>(); labelLE.preferredWidth = 20f; labelLE.flexibleWidth = 20f; FilterDropdown = UIUtility.CreateDropdown("FilterDropdown", itemPanel.transform); FilterDropdown.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 100f); Text captionText = FilterDropdown.captionText; captionText.transform.SetRect(0f, 0f, 1f, 1f, 0f, 2f, -15f, -2f); captionText.resizeTextForBestFit = false; captionText.fontSize = 26; captionText.alignment = TextAnchor.MiddleCenter; FilterDropdown.itemText.fontStyle = FontStyle.Bold; FilterDropdown.options.Clear(); FilterDropdown.options.Add(new Dropdown.OptionData("Filtered List")); FilterDropdown.options.Add(new Dropdown.OptionData("Hidden Items")); FilterDropdown.options.Add(new Dropdown.OptionData("All Items")); FilterDropdown.value = 0; FilterDropdown.captionText.text = "Filtered List"; var dropdownEnabledLE = FilterDropdown.gameObject.AddComponent <LayoutElement>(); dropdownEnabledLE.preferredWidth = 30; dropdownEnabledLE.flexibleWidth = 30; FilterDropdown.onValueChanged.AddListener(value => { ChangeListFilter((ListVisibilityType)value); SetMenuVisibility(false); }); } }
/// <summary> /// Initialize the MaterialEditor UI /// </summary> protected void InitUI() { Padding = new RectOffset(3, 2, 0, 1); MaterialEditorWindow = UIUtility.CreateNewUISystem("MaterialEditorCanvas"); MaterialEditorWindow.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale.Value, 1080f / UIScale.Value); Visible = false; MaterialEditorWindow.gameObject.transform.SetParent(transform); MaterialEditorWindow.sortingOrder = 1000; MaterialEditorMainPanel = UIUtility.CreatePanel("Panel", MaterialEditorWindow.transform); MaterialEditorMainPanel.color = Color.white; MaterialEditorMainPanel.transform.SetRect(0.05f, 0.05f, UIWidth.Value * UIScale.Value, UIHeight.Value * UIScale.Value); UIUtility.AddOutlineToObject(MaterialEditorMainPanel.transform, Color.black); DragPanel = UIUtility.CreatePanel("Draggable", MaterialEditorMainPanel.transform); DragPanel.transform.SetRect(0f, 1f, 1f, 1f, 0f, -HeaderSize); DragPanel.color = Color.gray; UIUtility.MakeObjectDraggable(DragPanel.rectTransform, MaterialEditorMainPanel.rectTransform); var nametext = UIUtility.CreateText("Nametext", DragPanel.transform, "Material Editor"); nametext.transform.SetRect(); nametext.alignment = TextAnchor.MiddleCenter; FilterInputField = UIUtility.CreateInputField("Filter", DragPanel.transform, "Filter"); FilterInputField.transform.SetRect(0f, 0f, 0f, 1f, 1f, 1f, 100f, -1f); FilterInputField.onValueChanged.AddListener(RefreshUI); var close = UIUtility.CreateButton("CloseButton", DragPanel.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -20f, 1f, -1f, -1f); close.onClick.AddListener(() => Visible = false); //X button var x1 = UIUtility.CreatePanel("x1", close.transform); x1.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x1.rectTransform.eulerAngles = new Vector3(0f, 0f, 45f); x1.color = Color.black; var x2 = UIUtility.CreatePanel("x2", close.transform); x2.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x2.rectTransform.eulerAngles = new Vector3(0f, 0f, -45f); x2.color = Color.black; MaterialEditorScrollableUI = UIUtility.CreateScrollView("MaterialEditorWindow", MaterialEditorMainPanel.transform); MaterialEditorScrollableUI.transform.SetRect(0f, 0f, 1f, 1f, MarginSize, MarginSize, -MarginSize, -HeaderSize - MarginSize / 2f); MaterialEditorScrollableUI.gameObject.AddComponent <Mask>(); MaterialEditorScrollableUI.content.gameObject.AddComponent <VerticalLayoutGroup>(); MaterialEditorScrollableUI.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; MaterialEditorScrollableUI.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(ScrollOffsetX, 0f); MaterialEditorScrollableUI.viewport.offsetMax = new Vector2(ScrollOffsetX, 0f); MaterialEditorScrollableUI.movementType = ScrollRect.MovementType.Clamped; MaterialEditorScrollableUI.verticalScrollbar.GetComponent <Image>().color = new Color(1, 1, 1, 0.6f); var template = ItemTemplate.CreateTemplate(MaterialEditorScrollableUI.content.transform); VirtualList = MaterialEditorScrollableUI.gameObject.AddComponent <VirtualList>(); VirtualList.ScrollRect = MaterialEditorScrollableUI; VirtualList.EntryTemplate = template; VirtualList.Initialize(); }
public void CreateUI() { UISystem = UIUtility.CreateNewUISystem("BetterSceneLoaderCanvas"); UISystem.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale, 1080f / UIScale); ShowWindow(false); mainPanel = UIUtility.CreatePanel("Panel", UISystem.transform); mainPanel.color = backgroundColor; UIUtility.AddOutlineToObject(mainPanel.transform, outlineColor); var drag = UIUtility.CreatePanel("Draggable", mainPanel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = dragColor; UIUtility.MakeObjectDraggable(drag.rectTransform, mainPanel.rectTransform); nametext = UIUtility.CreateText("Nametext", drag.transform, "Scenes"); nametext.transform.SetRect(0f, 0f, 1f, 1f, 340f, 0f, -buttonSize * 2f); nametext.alignment = TextAnchor.MiddleCenter; var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -buttonSize * 2f); close.onClick.AddListener(() => ShowWindow(false)); var x1 = UIUtility.CreatePanel("x1", close.transform); x1.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x1.rectTransform.eulerAngles = new Vector3(0f, 0f, 45f); x1.color = new Color(0f, 0f, 0f, 1f); var x2 = UIUtility.CreatePanel("x2", close.transform); x2.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x2.rectTransform.eulerAngles = new Vector3(0f, 0f, -45f); x2.color = new Color(0f, 0f, 0f, 1f); var category = UIUtility.CreateDropdown("Dropdown", drag.transform, "Categories"); category.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 100f); category.captionText.transform.SetRect(0f, 0f, 1f, 1f, 0f, 2f, -15f, -2f); category.captionText.alignment = TextAnchor.MiddleCenter; category.options = GetCategories(); category.onValueChanged.AddListener(x => { currentCategoryFolder = CategoryFolders[category.options[x].text]; imagelist.content.GetComponentInChildren <Image>().gameObject.SetActive(false); imagelist.content.anchoredPosition = new Vector2(0f, 0f); PopulateGrid(); }); var refresh = UIUtility.CreateButton("RefreshButton", drag.transform, "Refresh"); refresh.transform.SetRect(0f, 0f, 0f, 1f, 100f, 0f, 180f); refresh.onClick.AddListener(ReloadImages); var save = UIUtility.CreateButton("SaveButton", drag.transform, "Save"); save.transform.SetRect(0f, 0f, 0f, 1f, 180f, 0f, 260f); save.interactable = false; save.onClick.AddListener(() => { string path = Path.Combine(currentCategoryFolder, DateTime.Now.ToString("yyyy_MMdd_HHmm_ss_fff") + ".png"); OnSaveButtonClick(path); var button = CreateSceneButton(imagelist.content.GetComponentInChildren <Image>().transform, PngAssist.LoadTexture(path), path); button.transform.SetAsFirstSibling(); }); var folder = UIUtility.CreateButton("FolderButton", drag.transform, "Folder"); folder.transform.SetRect(0f, 0f, 0f, 1f, 260f, 0f, 340f); folder.onClick.AddListener(() => OnFolderButtonClick(scenePath)); var loadingPanel = UIUtility.CreatePanel("LoadingIconPanel", drag.transform); loadingPanel.transform.SetRect(0f, 0f, 0f, 1f, 340f, 0f, 340f + headerSize); loadingPanel.color = new Color(0f, 0f, 0f, 0f); var loadingIcon = UIUtility.CreatePanel("LoadingIcon", loadingPanel.transform); loadingIcon.transform.SetRect(0.1f, 0.1f, 0.9f, 0.9f); var loadiconTex = PngAssist.ChangeTextureFromByte(Resource.GetResourceAsBytes(typeof(SceneLoaderUI).Assembly, "Resources.loadicon")); loadingIcon.sprite = Sprite.Create(loadiconTex, new Rect(0, 0, loadiconTex.width, loadiconTex.height), new Vector2(0.5f, 0.5f)); LoadingIcon.Init(loadingIcon, -5f); imagelist = UIUtility.CreateScrollView("Imagelist", mainPanel.transform); imagelist.transform.SetRect(0f, 0f, 1f, 1f, marginSize, marginSize, -marginSize, -headerSize - marginSize / 2f); imagelist.gameObject.AddComponent <Mask>(); imagelist.content.gameObject.AddComponent <VerticalLayoutGroup>(); imagelist.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; imagelist.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); imagelist.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); imagelist.movementType = ScrollRect.MovementType.Clamped; optionspanel = UIUtility.CreatePanel("ButtonPanel", imagelist.transform); optionspanel.gameObject.SetActive(false); confirmpanel = UIUtility.CreatePanel("ConfirmPanel", imagelist.transform); confirmpanel.gameObject.SetActive(false); yesbutton = UIUtility.CreateButton("YesButton", confirmpanel.transform, "Y"); yesbutton.transform.SetRect(0f, 0f, 0.5f, 1f); yesbutton.onClick.AddListener(() => OnDeleteButtonClick(currentPath)); nobutton = UIUtility.CreateButton("NoButton", confirmpanel.transform, "N"); nobutton.transform.SetRect(0.5f, 0f, 1f, 1f); nobutton.onClick.AddListener(() => confirmpanel.gameObject.SetActive(false)); var loadbutton = UIUtility.CreateButton("LoadButton", optionspanel.transform, "Load"); loadbutton.transform.SetRect(0f, 0f, 0.3f, 1f); loadbutton.onClick.AddListener(() => { confirmpanel.gameObject.SetActive(false); optionspanel.gameObject.SetActive(false); OnLoadButtonClick(currentPath); if (BetterSceneLoaderCore.AutoClose.Value) { ShowWindow(false); } }); var importbutton = UIUtility.CreateButton("ImportButton", optionspanel.transform, "Import"); importbutton.transform.SetRect(0.35f, 0f, 0.65f, 1f); importbutton.onClick.AddListener(() => { OnImportButtonClick(currentPath); confirmpanel.gameObject.SetActive(false); optionspanel.gameObject.SetActive(false); }); var deletebutton = UIUtility.CreateButton("DeleteButton", optionspanel.transform, "Delete"); deletebutton.transform.SetRect(0.7f, 0f, 1f, 1f); deletebutton.onClick.AddListener(() => { confirmpanel.gameObject.SetActive(true); currentButton.gameObject.SetActive(false); confirmpanel.gameObject.SetActive(false); optionspanel.gameObject.SetActive(false); }); var pluginiconTex = PngAssist.ChangeTextureFromByte(Resource.GetResourceAsBytes(typeof(SceneLoaderUI).Assembly, "Resources.pluginicon")); toolbarToggle = CustomToolbarButtons.AddLeftToolbarToggle(pluginiconTex, false, ShowWindow); UpdateWindow(); PopulateGrid(); }
void MakeBetterSceneLoader() { UISystem = UIUtility.CreateNewUISystem("BetterSceneLoaderCanvas"); UISystem.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale, 1080f / UIScale); UISystem.gameObject.SetActive(false); UISystem.gameObject.transform.SetParent(transform); mainPanel = UIUtility.CreatePanel("Panel", UISystem.transform); mainPanel.color = backgroundColor; UIUtility.AddOutlineToObject(mainPanel.transform, outlineColor); var drag = UIUtility.CreatePanel("Draggable", mainPanel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = dragColor; UIUtility.MakeObjectDraggable(drag.rectTransform, mainPanel.rectTransform); nametext = UIUtility.CreateText("Nametext", drag.transform, "Scenes"); nametext.transform.SetRect(0f, 0f, 1f, 1f, 340f, 0f, -buttonSize * 2f); nametext.alignment = TextAnchor.MiddleCenter; var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -buttonSize * 2f); close.onClick.AddListener(() => UISystem.gameObject.SetActive(false)); Utils.AddCloseSymbol(close); category = UIUtility.CreateDropdown("Dropdown", drag.transform, "Categories"); category.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 100f); category.captionText.transform.SetRect(0f, 0f, 1f, 1f, 0f, 2f, -15f, -2f); category.captionText.alignment = TextAnchor.MiddleCenter; category.options = GetCategories(); category.onValueChanged.AddListener((x) => { imagelist.content.GetComponentInChildren <Image>().gameObject.SetActive(false); imagelist.content.anchoredPosition = new Vector2(0f, 0f); PopulateGrid(); }); var refresh = UIUtility.CreateButton("RefreshButton", drag.transform, "Refresh"); refresh.transform.SetRect(0f, 0f, 0f, 1f, 100f, 0f, 180f); refresh.onClick.AddListener(() => ReloadImages()); var save = UIUtility.CreateButton("SaveButton", drag.transform, "Save"); save.transform.SetRect(0f, 0f, 0f, 1f, 180f, 0f, 260f); save.onClick.AddListener(() => SaveScene()); var folder = UIUtility.CreateButton("FolderButton", drag.transform, "Folder"); folder.transform.SetRect(0f, 0f, 0f, 1f, 260f, 0f, 340f); folder.onClick.AddListener(() => Process.Start(scenePath)); var loadingPanel = UIUtility.CreatePanel("LoadingIconPanel", drag.transform); loadingPanel.transform.SetRect(0f, 0f, 0f, 1f, 340f, 0f, 340f + headerSize); loadingPanel.color = new Color(0f, 0f, 0f, 0f); var loadingIcon = UIUtility.CreatePanel("LoadingIcon", loadingPanel.transform); loadingIcon.transform.SetRect(0.1f, 0.1f, 0.9f, 0.9f); var texture = Utils.LoadTexture(Properties.Resources.loadicon); loadingIcon.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); LoadingIcon.Init(loadingIcon, -5f); imagelist = UIUtility.CreateScrollView("Imagelist", mainPanel.transform); imagelist.transform.SetRect(0f, 0f, 1f, 1f, marginSize, marginSize, -marginSize, -headerSize - marginSize / 2f); imagelist.gameObject.AddComponent <Mask>(); imagelist.content.gameObject.AddComponent <VerticalLayoutGroup>(); imagelist.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; imagelist.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); imagelist.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); imagelist.movementType = ScrollRect.MovementType.Clamped; optionspanel = UIUtility.CreatePanel("ButtonPanel", imagelist.transform); optionspanel.gameObject.SetActive(false); confirmpanel = UIUtility.CreatePanel("ConfirmPanel", imagelist.transform); confirmpanel.gameObject.SetActive(false); yesbutton = UIUtility.CreateButton("YesButton", confirmpanel.transform, "Y"); yesbutton.transform.SetRect(0f, 0f, 0.5f, 1f); yesbutton.onClick.AddListener(() => DeleteScene(currentPath)); nobutton = UIUtility.CreateButton("NoButton", confirmpanel.transform, "N"); nobutton.transform.SetRect(0.5f, 0f, 1f, 1f); nobutton.onClick.AddListener(() => confirmpanel.gameObject.SetActive(false)); var loadbutton = UIUtility.CreateButton("LoadButton", optionspanel.transform, "Load"); loadbutton.transform.SetRect(0f, 0f, 0.3f, 1f); loadbutton.onClick.AddListener(() => LoadScene(currentPath)); var importbutton = UIUtility.CreateButton("ImportButton", optionspanel.transform, "Import"); importbutton.transform.SetRect(0.35f, 0f, 0.65f, 1f); importbutton.onClick.AddListener(() => ImportScene(currentPath)); var deletebutton = UIUtility.CreateButton("DeleteButton", optionspanel.transform, "Delete"); deletebutton.transform.SetRect(0.7f, 0f, 1f, 1f); deletebutton.onClick.AddListener(() => confirmpanel.gameObject.SetActive(true)); PopulateGrid(); }
public static void InitUI() { DynamicBoneEditorButton = MakerAPI.AddAccessoryWindowControl(new MakerButton("Dynamic Bone Editor", null, PluginInstance)); #if !PH DynamicBoneEditorButton.GroupingID = "Buttons"; #endif DynamicBoneEditorButton.OnClick.AddListener(() => ShowUI(0)); var windowBackground = new Texture2D(1, 1, TextureFormat.ARGB32, false); windowBackground.SetPixel(0, 0, new Color(0f, 0f, 0f, 0f)); windowBackground.Apply(); WindowBackground = windowBackground; Padding = new RectOffset(3, 2, 0, 1); EditorWindow = UIUtility.CreateNewUISystem("DynamicBoneEditorCanvas"); EditorWindow.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale, 1080f / UIScale); Visible = false; EditorWindow.sortingOrder = 1000; EditorMainPanel = UIUtility.CreatePanel("Panel", EditorWindow.transform); EditorMainPanel.color = Color.white; EditorMainPanel.transform.SetRect(0.05f, 0.05f, UIWidth * UIScale, UIHeight * UIScale); UIUtility.AddOutlineToObject(EditorMainPanel.transform, Color.black); DragPanel = UIUtility.CreatePanel("Draggable", EditorMainPanel.transform); DragPanel.transform.SetRect(0f, 1f, 1f, 1f, 0f, -HeaderSize); DragPanel.color = Color.gray; UIUtility.MakeObjectDraggable(DragPanel.rectTransform, EditorMainPanel.rectTransform); var nametext = UIUtility.CreateText("Nametext", DragPanel.transform, "Dynamic Bone Editor"); nametext.transform.SetRect(); nametext.alignment = TextAnchor.MiddleCenter; var close = UIUtility.CreateButton("CloseButton", DragPanel.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -20f, 1f, -1f, -1f); close.onClick.AddListener(() => Visible = false); //X button var x1 = UIUtility.CreatePanel("x1", close.transform); x1.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x1.rectTransform.eulerAngles = new Vector3(0f, 0f, 45f); x1.color = Color.black; var x2 = UIUtility.CreatePanel("x2", close.transform); x2.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x2.rectTransform.eulerAngles = new Vector3(0f, 0f, -45f); x2.color = Color.black; EditorScrollableUI = UIUtility.CreateScrollView("DynamicBoneEditorWindow", EditorMainPanel.transform); EditorScrollableUI.transform.SetRect(0f, 0f, 1f, 1f, MarginSize, MarginSize, -MarginSize, -HeaderSize - MarginSize / 2f); EditorScrollableUI.gameObject.AddComponent <Mask>(); EditorScrollableUI.content.gameObject.AddComponent <VerticalLayoutGroup>(); EditorScrollableUI.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; EditorScrollableUI.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(ScrollOffsetX, 0f); EditorScrollableUI.viewport.offsetMax = new Vector2(ScrollOffsetX, 0f); EditorScrollableUI.movementType = ScrollRect.MovementType.Clamped; EditorScrollableUI.verticalScrollbar.GetComponent <Image>().color = new Color(1, 1, 1, 0.6f); { var contentList = UIUtility.CreatePanel("ListEntry", EditorScrollableUI.content.transform); contentList.gameObject.AddComponent <LayoutElement>().preferredHeight = PanelHeight; contentList.gameObject.AddComponent <Mask>(); contentList.color = RowColor; var itemPanel = UIUtility.CreatePanel("DynamicBonePanel", contentList.transform); itemPanel.gameObject.AddComponent <CanvasGroup>(); itemPanel.gameObject.AddComponent <HorizontalLayoutGroup>().padding = Padding; itemPanel.color = ItemColor; var label = UIUtility.CreateText("DynamicBoneLabel", itemPanel.transform, "Dynamic Bone"); label.alignment = TextAnchor.MiddleLeft; label.color = Color.black; var labelLE = label.gameObject.AddComponent <LayoutElement>(); labelLE.preferredWidth = LabelWidth; labelLE.flexibleWidth = LabelWidth; DynamicBoneDropdown = UIUtility.CreateDropdown("DynamicBoneDropdown", itemPanel.transform); DynamicBoneDropdown.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 100f); DynamicBoneDropdown.captionText.transform.SetRect(0f, 0f, 1f, 1f, 5f, 2f, -15f, -2f); DynamicBoneDropdown.captionText.alignment = TextAnchor.MiddleLeft; var dropdownEnabledLE = DynamicBoneDropdown.gameObject.AddComponent <LayoutElement>(); dropdownEnabledLE.preferredWidth = DropdownWidth; dropdownEnabledLE.flexibleWidth = 0; } FreezeAxis.CreateUI(EditorScrollableUI.content.transform); Weight.CreateUI(EditorScrollableUI.content.transform); Damping.CreateUI(EditorScrollableUI.content.transform); Elasticity.CreateUI(EditorScrollableUI.content.transform); Stiffness.CreateUI(EditorScrollableUI.content.transform); Inertia.CreateUI(EditorScrollableUI.content.transform); Radius.CreateUI(EditorScrollableUI.content.transform); }
void MakeBetterSceneLoader() { UISystem = UIUtility.CreateNewUISystem("BetterSceneLoaderCanvas"); UISystem.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale, 1080f / UIScale); UISystem.gameObject.SetActive(false); UISystem.gameObject.transform.SetParent(transform); mainPanel = UIUtility.CreatePanel("Panel", UISystem.transform); mainPanel.color = backgroundColor; UIUtility.AddOutlineToObject(mainPanel.transform, outlineColor); var drag = UIUtility.CreatePanel("Draggable", mainPanel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = dragColor; UIUtility.MakeObjectDraggable(drag.rectTransform, mainPanel.rectTransform); nametext = UIUtility.CreateText("Nametext", drag.transform, "Scenes"); nametext.transform.SetRect(0.87f, 0f, 0.98f, 1f, 340f, 0f, -buttonSize * 2f); nametext.alignment = TextAnchor.MiddleCenter; var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -buttonSize * 2f); close.onClick.AddListener(() => UISystem.gameObject.SetActive(false)); Utils.AddCloseSymbol(close); category = UIUtility.CreateDropdown("Dropdown", drag.transform, "Categories"); category.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 200f); category.captionText.transform.SetRect(0f, 0f, 1f, 1f, 0f, 2f, -15f, -2f); category.captionText.alignment = TextAnchor.MiddleCenter; category.onValueChanged.AddListener((x) => { imagelist.content.GetComponentInChildren <Image>().gameObject.SetActive(false); imagelist.content.anchoredPosition = new Vector2(0f, 0f); PopulateGrid(); }); // Увеличиваем область выпадающего списка и чувствительность скролла. ScrollRect categoryListRect = category.transform.Find("Template").GetComponent <ScrollRect>(); categoryListRect.scrollSensitivity = 45f; categoryListRect.transform.SetRect(0f, 0f, 1f, 1f, 0f, -330f, 0f, 0f); GetCategories(); var refresh = UIUtility.CreateButton("RefreshButton", drag.transform, "Refresh"); refresh.transform.SetRect(0f, 0f, 0f, 1f, 200f, 0f, 280f); refresh.onClick.AddListener(() => ReloadImages()); var save = UIUtility.CreateButton("SaveButton", drag.transform, "Save"); save.transform.SetRect(0f, 0f, 0f, 1f, 280f, 0f, 360f, 15f); save.onClick.AddListener(() => SaveScene()); var loadingPanel = UIUtility.CreatePanel("LoadingIconPanel", drag.transform); loadingPanel.transform.SetRect(0f, 0f, 0f, 1f, 380f, 0f, 380f + headerSize); loadingPanel.color = new Color(0f, 0f, 0f, 0f); var loadingIcon = UIUtility.CreatePanel("LoadingIcon", loadingPanel.transform); loadingIcon.transform.SetRect(0.1f, 0.1f, 0.9f, 0.9f); var texture = Utils.LoadTexture(Properties.Resources.loadicon); loadingIcon.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); LoadingIcon.Init(loadingIcon, -5f); var folder = UIUtility.CreateButton("FolderButton", drag.transform, "Folder"); folder.transform.SetRect(0f, 0f, 0f, 1f, 360f, 0f, 440f); folder.onClick.AddListener(() => openFolder()); var oneColumn = UIUtility.CreateButton("oneColumn", drag.transform, "1"); oneColumn.transform.SetRect(0f, 0f, 0f, 1f, 450f, 0f, 470f, 0f); oneColumn.onClick.AddListener(() => setColums(1)); var twoColumn = UIUtility.CreateButton("twoColumn", drag.transform, "2"); twoColumn.transform.SetRect(0f, 0f, 0f, 1f, 470f, 0f, 490f, 0f); twoColumn.onClick.AddListener(() => setColums(2)); imagelist = UIUtility.CreateScrollView("Imagelist", mainPanel.transform); imagelist.transform.SetRect(0f, 0f, 1f, 1f, marginSize, marginSize, -marginSize, -headerSize - marginSize / 2f); imagelist.gameObject.AddComponent <Mask>(); imagelist.content.gameObject.AddComponent <VerticalLayoutGroup>(); imagelist.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; imagelist.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); imagelist.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); imagelist.movementType = ScrollRect.MovementType.Clamped; lastLoadedMark_Panel = UIUtility.CreatePanel("lastLoadedMark_Panel", imagelist.transform); lastLoadedMark_Panel.color = new Color(1f, .5f, 1f, 1f); UIUtility.AddOutlineToObject(lastLoadedMark_Panel.transform, outlineColor); lastLoadedMark_Panel.gameObject.SetActive(false); var lastLoadedMark_Text = UIUtility.CreateText("confirmPanelText", lastLoadedMark_Panel.transform, "Current"); lastLoadedMark_Text.color = new Color(.1f, .1f, .1f, 1f); lastLoadedMark_Text.transform.SetRect(.05f, .02f, .95f, .98f); lastLoadedMark_Text.alignment = TextAnchor.MiddleCenter; optionspanel = UIUtility.CreatePanel("ButtonPanel", imagelist.transform); optionspanel.gameObject.SetActive(false); confirmpanel = UIUtility.CreatePanel("ConfirmPanel", imagelist.transform); confirmpanel.gameObject.SetActive(false); var confirmPanelText = UIUtility.CreateText("confirmPanelText", confirmpanel.transform, "confirmText"); confirmPanelText.text = "Delete scene?"; confirmPanelText.color = Color.red; confirmPanelText.fontStyle = FontStyle.Bold; confirmPanelText.transform.SetRect(-1f, 1f, 2f, 2f); confirmPanelText.alignment = TextAnchor.MiddleCenter; yesbutton = UIUtility.CreateButton("YesButton", confirmpanel.transform, "Y"); yesbutton.transform.SetRect(0f, 0f, 0.5f, 1f); yesbutton.onClick.AddListener(() => DeleteScene(currentPath)); nobutton = UIUtility.CreateButton("NoButton", confirmpanel.transform, "N"); nobutton.transform.SetRect(0.5f, 0f, 1f, 1f); nobutton.onClick.AddListener(() => { confirmpanel.gameObject.SetActive(false); confirmpanel2.gameObject.SetActive(false); }); confirmpanel2 = UIUtility.CreatePanel("ConfirmPanel2", imagelist.transform); confirmpanel2.gameObject.SetActive(false); var confirmPanelText2 = UIUtility.CreateText("confirmPanelText2", confirmpanel2.transform, "confirmText2"); confirmPanelText2.text = "ReSave scene?"; confirmPanelText2.color = Color.magenta; confirmPanelText2.fontStyle = FontStyle.Bold; confirmPanelText2.transform.SetRect(-1f, 1f, 2f, 2f); confirmPanelText2.alignment = TextAnchor.MiddleCenter; yesbutton2 = UIUtility.CreateButton("YesButton2", confirmpanel2.transform, "Y"); yesbutton2.transform.SetRect(0f, 0f, 0.5f, 1f); yesbutton2.onClick.AddListener(() => { StartCoroutine(ResaveScene()); }); nobutton2 = UIUtility.CreateButton("NoButton2", confirmpanel2.transform, "N"); nobutton2.transform.SetRect(0.5f, 0f, 1f, 1f); nobutton2.onClick.AddListener(() => { confirmpanel.gameObject.SetActive(false); confirmpanel2.gameObject.SetActive(false); }); var filenamePanel = UIUtility.CreatePanel("filenamePanel", optionspanel.transform); filenamePanel.color = new Color(0f, 0f, 0f, .8f); filenamePanel.transform.SetRect(0f, 5.2f, 1f, 6.6f); fileNameText = UIUtility.CreateText("FileNameText", filenamePanel.transform, "filename"); fileNameText.color = new Color(.95f, .95f, .95f, 1f); fileNameText.transform.SetRect(0.05f, 0f, 0.95f, 1f); fileNameText.alignment = TextAnchor.MiddleCenter; var resavebutton = UIUtility.CreateButton("ReSaveButton", optionspanel.transform, "ReSave"); resavebutton.transform.SetRect(0.68f, 4f, 0.98f, 5f); resavebutton.onClick.AddListener(() => { confirmpanel.gameObject.SetActive(false); confirmpanel2.gameObject.SetActive(true); }); var loadbutton = UIUtility.CreateButton("LoadButton", optionspanel.transform, "Load"); loadbutton.transform.SetRect(0f, 0f, 0.3f, 1f); loadbutton.onClick.AddListener(() => LoadScene(currentPath)); var importbutton = UIUtility.CreateButton("ImportButton", optionspanel.transform, "Import"); importbutton.transform.SetRect(0.35f, 0f, 0.65f, 1f); importbutton.onClick.AddListener(() => ImportScene(currentPath)); var deletebutton = UIUtility.CreateButton("DeleteButton", optionspanel.transform, "Delete"); deletebutton.transform.SetRect(0.7f, 0f, 1f, 1f); deletebutton.onClick.AddListener(() => { confirmpanel.gameObject.SetActive(true); confirmpanel2.gameObject.SetActive(false); }); PopulateGrid(); }
protected void InitUI() { UIUtility.Init(nameof(KK_Plugins)); MaterialEditorWindow = UIUtility.CreateNewUISystem("MaterialEditorCanvas"); MaterialEditorWindow.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale.Value, 1080f / UIScale.Value); HideUI(); MaterialEditorWindow.gameObject.transform.SetParent(transform); MaterialEditorWindow.sortingOrder = 1000; MaterialEditorMainPanel = UIUtility.CreatePanel("Panel", MaterialEditorWindow.transform); MaterialEditorMainPanel.color = Color.white; MaterialEditorMainPanel.transform.SetRect(0.05f, 0.05f, UIWidth.Value * UIScale.Value, UIHeight.Value * UIScale.Value); UIUtility.AddOutlineToObject(MaterialEditorMainPanel.transform, Color.black); var drag = UIUtility.CreatePanel("Draggable", MaterialEditorMainPanel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = Color.gray; UIUtility.MakeObjectDraggable(drag.rectTransform, MaterialEditorMainPanel.rectTransform); var nametext = UIUtility.CreateText("Nametext", drag.transform, "Material Editor"); nametext.transform.SetRect(0f, 0f, 1f, 1f, 0f, 0f, 0f); nametext.alignment = TextAnchor.MiddleCenter; var fileWatcher = UIUtility.CreateToggle("Filewatcher", drag.transform, ""); fileWatcher.transform.SetRect(0f, 0f, 0f, 1f); fileWatcher.isOn = WatchTexChanges.Value; fileWatcher.onValueChanged.AddListener((value) => { WatchTexChanges.Value = value; if (!value) { TexChangeWatcher?.Dispose(); } }); var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -20f); close.onClick.AddListener(() => HideUI()); //X button var x1 = UIUtility.CreatePanel("x1", close.transform); x1.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x1.rectTransform.eulerAngles = new Vector3(0f, 0f, 45f); x1.color = Color.black; var x2 = UIUtility.CreatePanel("x2", close.transform); x2.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x2.rectTransform.eulerAngles = new Vector3(0f, 0f, -45f); x2.color = Color.black; MaterialEditorScrollableUI = UIUtility.CreateScrollView("MaterialEditorWindow", MaterialEditorMainPanel.transform); MaterialEditorScrollableUI.transform.SetRect(0f, 0f, 1f, 1f, marginSize, marginSize, -marginSize, -headerSize - marginSize / 2f); MaterialEditorScrollableUI.gameObject.AddComponent <Mask>(); MaterialEditorScrollableUI.content.gameObject.AddComponent <VerticalLayoutGroup>(); MaterialEditorScrollableUI.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; MaterialEditorScrollableUI.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); MaterialEditorScrollableUI.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); MaterialEditorScrollableUI.movementType = ScrollRect.MovementType.Clamped; var template = ItemTemplate.CreateTemplate(MaterialEditorScrollableUI.content.transform); virtualList = MaterialEditorScrollableUI.gameObject.AddComponent <VirtualList>(); virtualList.ScrollRect = MaterialEditorScrollableUI; virtualList.EntryTemplate = template; virtualList.Initialize(); }