using System; using System.Collections; using System.IO; using System.Linq; using System.Threading.Tasks; using UniGLTF; using UniHumanoid; using Unity.Collections; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; namespace VRM.SimpleViewer { /// /// UI event handling /// public class ViewerUI : MonoBehaviour { [SerializeField] TextFields m_texts = default; #region UI [SerializeField] Text m_version = default; [SerializeField] Button m_open = default; [SerializeField] Toggle m_enableLipSync = default; [SerializeField] Toggle m_enableAutoBlink = default; [SerializeField] Toggle m_useUrpMaterial = default; [SerializeField] Toggle m_useAsync = default; [SerializeField] Toggle m_loadAnimation = default; // SpringBone [SerializeField] Toggle m_useFastSpringBone = default; [SerializeField] Toggle m_springBonePause = default; [SerializeField] Toggle m_springBoneScaling = default; [SerializeField] Slider m_springExternalX = default; [SerializeField] Slider m_springExternalY = default; [SerializeField] Slider m_springExternalZ = default; [SerializeField] Button m_reset = default; [SerializeField] Button m_reconstruct = default; #endregion [SerializeField] HumanPoseTransfer m_src = default; [SerializeField] GameObject m_target = default; [SerializeField] GameObject Root = default; [SerializeField] TextAsset m_motion; [Serializable] class TextFields { [SerializeField, Header("Info")] Text m_textModelTitle = default; [SerializeField] Text m_textModelVersion = default; [SerializeField] Text m_textModelAuthor = default; [SerializeField] Text m_textModelContact = default; [SerializeField] Text m_textModelReference = default; [SerializeField] RawImage m_thumbnail = default; [SerializeField, Header("CharacterPermission")] Text m_textPermissionAllowed = default; [SerializeField] Text m_textPermissionViolent = default; [SerializeField] Text m_textPermissionSexual = default; [SerializeField] Text m_textPermissionCommercial = default; [SerializeField] Text m_textPermissionOther = default; [SerializeField, Header("DistributionLicense")] Text m_textDistributionLicense = default; [SerializeField] Text m_textDistributionOther = default; public void Start() { m_textModelTitle.text = ""; m_textModelVersion.text = ""; m_textModelAuthor.text = ""; m_textModelContact.text = ""; m_textModelReference.text = ""; m_textPermissionAllowed.text = ""; m_textPermissionViolent.text = ""; m_textPermissionSexual.text = ""; m_textPermissionCommercial.text = ""; m_textPermissionOther.text = ""; m_textDistributionLicense.text = ""; m_textDistributionOther.text = ""; } public void UpdateMeta(VRMMetaObject meta) { m_textModelTitle.text = meta.Title; m_textModelVersion.text = meta.Version; m_textModelAuthor.text = meta.Author; m_textModelContact.text = meta.ContactInformation; m_textModelReference.text = meta.Reference; m_textPermissionAllowed.text = meta.AllowedUser.ToString(); m_textPermissionViolent.text = meta.ViolentUssage.ToString(); m_textPermissionSexual.text = meta.SexualUssage.ToString(); m_textPermissionCommercial.text = meta.CommercialUssage.ToString(); m_textPermissionOther.text = meta.OtherPermissionUrl; m_textDistributionLicense.text = meta.LicenseType.ToString(); m_textDistributionOther.text = meta.OtherLicenseUrl; m_thumbnail.texture = meta.Thumbnail; } } [Serializable] class UIFields { [SerializeField] Toggle ToggleMotionTPose = default; [SerializeField] Toggle ToggleMotionBVH = default; [SerializeField] ToggleGroup ToggleMotion = default; Toggle m_activeToggleMotion = default; public void UpdateToggle(Action onBvh, Action onTPose) { var value = ToggleMotion.ActiveToggles().FirstOrDefault(); if (value == m_activeToggleMotion) return; m_activeToggleMotion = value; if (value == ToggleMotionTPose) { onTPose(); } else if (value == ToggleMotionBVH) { onBvh(); } else { UniGLTFLogger.Log("motion: no toggle"); } } } [SerializeField] UIFields m_ui = default; [SerializeField] HumanPoseClip m_pose = default; private void Reset() { #if UNITY_2022_3_OR_NEWER var buttons = GameObject.FindObjectsByType