using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UIKF3MorphPanel : MonoBehaviour { public Transform EyesPanel, EyebrowsPanel, MouthPanel; public ToggleGroup EyesToggleGroup; public static UIKF3MorphPanel Create(KF3FriendContainer container) { var main = KF3ModelViewerMain.Instance; var morphPanel = Instantiate(main.Resources.Pfb_KF3MorphPanel, main.UI.DynamicPanels); //morphPanel.Init(container); return morphPanel; } //public void Init(KF3FriendContainer container) //{ // foreach (Transform child in container.GetComponentsInChildren()) // { // GameObject go = null; // switch (child.name) // { // case "md_eye_base": // { // go = Instantiate(KF3ModelViewerInterface.Instance.Pfb_MorphSliderToggle, EyesPanel); // go.GetChild().text = "Look At Camera"; // go.Get().wholeNumbers = false; // go.Get().minValue = 0; // go.Get().maxValue = 1; // go.Get().value = container.LookAtStrength; // go.Get().onValueChanged.AddListener((value) => { container.UpdateLookAtTarget(value); }); // go.GetChild().isOn = container.EyesLocked; // go.GetChild().onValueChanged.AddListener((val) => container.EyesLocked = val); // SkinnedMeshRenderer meshRenderer = child.GetComponent(); // if (meshRenderer == null) break; // if (meshRenderer.sharedMesh == null) break; // for (int i = 0; i < meshRenderer.sharedMesh.blendShapeCount; i++) // { // CreateMorph(meshRenderer, EyesPanel.transform, i, "BS_eye.eye_"); // } // if (HumanBones.ContainsKey(HumanBodyBones.Head) && HumanBones[HumanBodyBones.Head] != null && !EyeTarget) // { // Transform head = HumanBones[HumanBodyBones.Head]; // EyeTarget = (UIHandleEyes)new GameObject().AddComponent() // .Init(this) // .SetScale(2) // .SetColor(Color.red); // EyeTarget.name = $"Eyes_{ModelId}"; // EyeTarget.transform.localScale = 0.1f * Vector3.one; // EyeTarget.transform.SetParent(head); // EyeTarget.transform.position = head.position + head.forward; // } // goto case "md_eye_special_a"; // } // case "md_eye_special_a": // case "md_eye_special_b": // { // go = Instantiate(KF3ModelViewerInterface.EyeTogglePrefab, EyesMorphsPanel.transform); // go.GetChild().text = child.name; // go.Get().isOn = child.gameObject.activeSelf; // go.Get().onValueChanged.AddListener((value) => { ToggleVisible(child.gameObject, value); }); // InstantiatedObjects.Add(go); // break; // } // case "md_mouth_base": // { // SkinnedMeshRenderer meshRenderer = child.GetComponent(); // if (meshRenderer == null) break; // if (meshRenderer.sharedMesh == null) break; // for (int i = 0; i < meshRenderer.sharedMesh.blendShapeCount; i++) // { // CreateMorph(meshRenderer, MouthMorphsPanel.transform, i, "BS_mouth.mouth_"); // } // break; // } // case "md_eye_l": LeftEye = child; break; // case "md_eye_r": RightEye = child; break; // case "md_brow_base": // { // SkinnedMeshRenderer meshRenderer = child.GetComponent(); // if (meshRenderer == null) break; // if (meshRenderer.sharedMesh == null) break; // for (int i = 0; i < meshRenderer.sharedMesh.blendShapeCount; i++) // { // CreateMorph(meshRenderer, EyebrowsMorphsPanel.transform, i, "BS_brow.brow_"); // } // break; // } // case "md_subweapon": // { // SubWeapon = child; // if (SubWeaponBone == null) break; // SubWeapon.SetParent(SubWeaponBone); // SubWeapon.SetPositionAndRotation(Vector3.zero, Quaternion.identity); // break; // } // case "subweapon": // { // SubWeaponBone = child; // if (SubWeapon == null) break; // SubWeapon.SetParent(SubWeaponBone); // SubWeapon.SetPositionAndRotation(Vector3.zero, Quaternion.identity); // break; // } // } // } //} public void ResetChildMorphs(Transform self) { foreach(var helper in self.GetComponentsInChildren()) { helper.Slider.value = 0; } } //public void PasteValues(KF3MorphHelper[] helpers) //{ // foreach (var morph in keyframe.Morphs) // { // var rend = this.Morphs.Keys.FirstOrDefault(k => k.name == morph.ParentName); // if (rend == null) continue; // KF3MorphHelper h = this.Morphs[rend].FirstOrDefault(m => m.Name == morph.Name); // if (h != null) this.UpdateMorph(rend, rend.sharedMesh.GetBlendShapeIndex(morph.Name), morph.Strength, h.Slider); // } //} }