public Appearance(DollMaker dm) : base(dm) { dm.mainControls.RegisterTab("Morphs", moduleUI); morphSearch = new MorphSearch(this); JSONArray bodyUI = DollMaker.CONFIG_JSON["bodyUI"].AsArray; for (int i = 0; i < bodyUI.Count; i++) { JSONClass uiPart = bodyUI[i].AsObject; string title = uiPart["title"].Value; string boneName = uiPart["bone"].Value; string searchTerm = uiPart["search"].Value; float x = uiPart["offset"]["x"].AsFloat; float y = uiPart["offset"]["y"].AsFloat; float z = uiPart["offset"]["z"].AsFloat; DAZBone bone = atom.GetStorableByID(boneName) as DAZBone; BoneAttachedUI boneUI = new BoneAttachedUI(title, bone, ui, new Vector3(x, y, z), moduleUI); boneUI.button.button.onClick.AddListener(() => { morphSearch.searchBox.text = searchTerm; }); baUI.Add(boneUI); } UIDynamicButton loadMorphsButton = CreateModuleButton("Load Morphs"); loadMorphsButton.button.onClick.AddListener(() => { string appearancePath = SuperController.singleton.savesDir + "Person" + "\\appearance"; SuperController.singleton.fileBrowserUI.defaultPath = appearancePath; SuperController.singleton.fileBrowserUI.SetTextEntry(b: false); SuperController.singleton.fileBrowserUI.Show((string saveName) => { if (!(saveName != string.Empty)) { return; } SuperController.singleton.SetLoadDirFromFilePath(saveName); JSONClass save = JSON.Parse(SuperController.singleton.ReadFileIntoString(saveName)).AsObject; }); }); }
public Appearance(DollMaker dm) : base(dm) { dm.mainControls.RegisterTab("Morphs", moduleUI, this); morphSearch = new MorphSearch(this); JSONArray bodyUI = DollMaker.CONFIG_JSON["bodyUI"].AsArray; for (int i = 0; i < bodyUI.Count; i++) { JSONClass uiPart = bodyUI[i].AsObject; string title = uiPart["title"].Value; string boneName = uiPart["bone"].Value; string searchTerm = uiPart["search"].Value; float x = uiPart["offset"]["x"].AsFloat; float y = uiPart["offset"]["y"].AsFloat; float z = uiPart["offset"]["z"].AsFloat; DAZBone bone = atom.GetStorableByID(boneName) as DAZBone; BoneAttachedUI boneUI = new BoneAttachedUI(title, bone, ui, new Vector3(x, y, z), moduleUI); boneUI.button.button.onClick.AddListener(() => { morphSearch.searchBox.text = searchTerm; }); baUI.Add(boneUI); } UIDynamicButton loadMorphsButton = CreateModuleButton("Load Morph Preset"); loadMorphsButton.button.onClick.AddListener(() => { SuperController.singleton.editModeToggle.isOn = true; SuperController.singleton.ShowMainHUDAuto(); PresetManager pm = atom.GetComponentInChildren <PresetManager>(includeInactive: true); PresetManagerControlUI pmcui = atom.GetComponentInChildren <PresetManagerControlUI>(includeInactive: true); if (pm != null && pmcui != null) { pm.itemType = PresetManager.ItemType.Custom; pm.customPath = "Atom/Person/Morphs/"; pmcui.browsePresetsButton.onClick.Invoke(); } }); }
public Appearance(DollMaker dm) : base(dm) { JSONArray bodyUI = DollMaker.CONFIG_JSON["bodyUI"].AsArray; for (int i = 0; i < bodyUI.Count; i++) { JSONClass uiPart = bodyUI[i].AsObject; string title = uiPart["title"].Value; string boneName = uiPart["bone"].Value; string searchTerm = uiPart["search"].Value; float x = uiPart["offset"]["x"].AsFloat; float y = uiPart["offset"]["y"].AsFloat; float z = uiPart["offset"]["z"].AsFloat; DAZBone bone = person.GetStorableByID(boneName) as DAZBone; BoneAttachedUI boneUI = new BoneAttachedUI(title, bone, ui, new Vector3(x, y, z)); boneUI.button.button.onClick.AddListener(() => { UpdateSearch(searchTerm); searchBox.text = searchTerm; }); baUI.Add(boneUI); } searchBox = ui.CreateTextInput("Search For Morph", 1200, 120); searchBox.transform.localPosition = new Vector3(0, -120, 0); //textInput.gameObject.AddComponent<InputPressedHandler>(); ScrollRect sr = ui.CreateScrollRect(1200, 800); sr.transform.localPosition = new Vector3(0, -600, 0); VerticalLayoutGroup vlg = ui.CreateVerticalLayout(1200, 1200); vlg.transform.SetParent(sr.transform, false); vlg.padding = new RectOffset(0, 0, 25, 25); RectTransform vlgrt = vlg.GetComponent <RectTransform>(); vlgrt.pivot = new Vector2(0.5f, 1); vlgrt.anchoredPosition = new Vector2(0, 0); sr.content = vlgrt; ContentSizeFitter csf = vlg.gameObject.AddComponent <ContentSizeFitter>(); csf.horizontalFit = ContentSizeFitter.FitMode.Unconstrained; csf.verticalFit = ContentSizeFitter.FitMode.PreferredSize; DAZCharacterSelector personGeometry = person.GetStorableByID("geometry") as DAZCharacterSelector; morphControl = personGeometry.morphsControlUI; regions = new HashSet <string>(); morphControl.GetMorphDisplayNames().ForEach((name) => { DAZMorph morph = morphControl.GetMorphByDisplayName(name); regions.Add(morph.region); }); List <string> morphNames = personGeometry.GetFloatParamNames(); morphNames.ForEach((s) => { // For testing scroll rect //if (morphNameToSlider.Keys.Count > 20) //{ // return; //} UIDynamicSlider morphSlider = ui.CreateSlider(s, 800, 80, false); morphSlider.gameObject.SetActive(false); //Image image = morphSlider.labelText.transform.parent.gameObject.GetComponentInChildren<Image>(); morphSlider.transform.SetParent(vlg.transform, false); personGeometry.GetFloatJSONParam(s).slider = morphSlider.slider; morphNameToSlider[s] = morphSlider; }); searchBox.onValueChanged.AddListener(UpdateSearch); }