Example #1
0
        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"));
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
                });
            }
        }
Example #5
0
        /// <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();
        }
Example #6
0
        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();
        }
Example #7
0
        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);
        }
Example #9
0
        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();
        }
Example #10
0
        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();
        }