| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | /** * Copyright(c) Live2D Inc. All rights reserved. * * Use of this source code is governed by the Live2D Open Software license * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. */using Live2D.Cubism.Framework.UserData;using System;using System.Collections.Generic;using UnityEngine;namespace Live2D.Cubism.Framework.Json{    /// <summary>    /// Handles user data from cdi3.json.    /// </summary>    [Serializable]    public sealed class CubismUserData3Json    {        /// <summary>        /// Loads a cdi3.json asset.        /// </summary>        /// <param name="userData3Json">cdi3.json to deserialize.</param>        /// <returns>Deserialized cdi3.json on success; <see langword="null"/> otherwise.</returns>        public static CubismUserData3Json LoadFrom(string userData3Json)        {            return (string.IsNullOrEmpty(userData3Json))                ? null                : JsonUtility.FromJson<CubismUserData3Json>(userData3Json);        }        /// <summary>        /// Loads a cdi3.json asset.        /// </summary>        /// <param name="userData3JsonAsset">cdi3.json to deserialize.</param>        /// <returns>Deserialized cdi3.json on success; <see langword="null"/> otherwise.</returns>        public static CubismUserData3Json LoadFrom(TextAsset userData3JsonAsset)        {            return (userData3JsonAsset == null)                ? null                : LoadFrom(userData3JsonAsset.text);        }        /// <summary>        /// Makes <see cref="CubismUserDataBody"/> array that was selected by <see cref="CubismUserDataTargetType"/>.        /// </summary>        /// <param name="targetType">Target object type.</param>        /// <returns><see cref="CubismUserDataBody"/> array. Selected by <see cref="CubismUserDataTargetType"/>.</returns>        public CubismUserDataBody[] ToBodyArray(CubismUserDataTargetType targetType)        {            var userDataList = new List<CubismUserDataBody>();            for (var i = 0; i < UserData.Length; ++i)            {                var body = new CubismUserDataBody                {                    Id = UserData[i].Id,                    Value = UserData[i].Value                };                switch (targetType)                {                    case CubismUserDataTargetType.ArtMesh:                    {                        // Only drawables.                        if (UserData[i].Target == "ArtMesh")                        {                            userDataList.Add(body);                        }                        break;                    }                    default:                    {                        break;                    }                }            }            return userDataList.ToArray();        }        #region Json Data        /// <summary>        /// Json file format version.        /// </summary>        [SerializeField]        public int Version;        /// <summary>        /// Additional data describing physics.        /// </summary>        [SerializeField]        public SerializableMeta Meta;        /// <summary>        /// Array of user data.        /// </summary>        [SerializeField]        public SerializableUserData[] UserData;        #endregion        #region Json Helpers        /// <summary>        /// Additional data describing user data.        /// </summary>        [Serializable]        public struct SerializableMeta        {            /// <summary>            /// Number of user data.            /// </summary>            [SerializeField]            public int UserDataCount;            /// <summary>            /// Total number of user data.            /// </summary>            [SerializeField]            public int TotalUserDataCount;        }        /// <summary>        /// User data.        /// </summary>        [Serializable]        public struct SerializableUserData        {            /// <summary>            /// Type of target object.            /// </summary>            [SerializeField]            public string Target;            /// <summary>            /// Name of target object.            /// </summary>            [SerializeField]            public string Id;            /// <summary>            /// Value.            /// </summary>            [SerializeField]            public string Value;        }        #endregion    }}
 |