Beispiel #1
0
        /// <summary>
        /// Parse JSON from byte data.
        /// </summary>
        /// <param name="jsonBytes">Byte data.</param>
        /// <returns>Value of parsed from JSON.</returns>
        public static Value ParseFromBytes(char[] jsonBytes)
        // throws Exception.
        {
            var jp  = new CubismJsonParser(jsonBytes);
            var ret = jp.Parse();

            return(ret);
        }
Beispiel #2
0
        /// <summary>
        /// Parse JSON from string data.
        /// </summary>
        /// <param name="jsonString">String data.</param>
        /// <returns>Value of parsed from JSON.</returns>
        public static Value ParseFromString(String jsonString)
        // throws Exception.
        {
            var buffer = jsonString.ToCharArray();
            var jp     = new CubismJsonParser(buffer);
            var ret    = jp.Parse();

            return(ret);
        }
Beispiel #3
0
        /// <summary>
        /// Loads a pose3.json.
        /// </summary>
        /// <param name="pose3Json">pose3.json to deserialize.</param>
        /// <returns>Deserialized pose3.json on success; <see langword="null"/> otherwise.</returns>
        public static CubismPose3Json LoadFrom(string pose3Json)
        {
            if (string.IsNullOrEmpty(pose3Json))
            {
                return(null);
            }

            var ret   = new CubismPose3Json();
            var value = CubismJsonParser.ParseFromString(pose3Json);

            ret.Type = (value.Get("Type") == null) ? null : value.Get("Type").toString();

            ret.FadeInTime = (value.Get("FadeInTime") == null) ? 0.5f : value.Get("FadeInTime").ToFloat();

            var groups = (value.Get("Groups") == null) ? null : value.Get("Groups").GetVector(null);

            if (groups != null)
            {
                ret.Groups = new SerializablePoseGroup[groups.Count][];

                for (var i = 0; i < groups.Count; ++i)
                {
                    var count = groups[i].GetVector(null).Count;
                    ret.Groups[i] = new SerializablePoseGroup[count];

                    for (var j = 0; j < count; ++j)
                    {
                        ret.Groups[i][j].Id = groups[i].GetVector(null)[j].Get("Id").toString();
                        var link = groups[i].GetVector(null)[j].Get("Link").GetVector(null);

                        if (link.Count == 0)
                        {
                            continue;
                        }

                        ret.Groups[i][j].Link = new string[link.Count];

                        for (var linkCount = 0; linkCount < link.Count; ++linkCount)
                        {
                            ret.Groups[i][j].Link[linkCount] = link[linkCount].toString();
                        }
                    }
                }
            }

            return(ret);
        }
Beispiel #4
0
        /// <summary>
        /// Loads a model.json asset.
        /// </summary>
        /// <param name="assetPath">The path to the asset.</param>
        /// <param name="loadAssetAtPath">Handler for loading assets.</param>
        /// <returns>The <see cref="CubismModel3Json"/> on success; <see langword="null"/> otherwise.</returns>
        public static CubismModel3Json LoadAtPath(string assetPath, LoadAssetAtPathHandler loadAssetAtPath)
        {
            // Load Json asset.
            var modelJsonAsset = loadAssetAtPath(typeof(string), assetPath) as string;

            // Return early in case Json asset wasn't loaded.
            if (modelJsonAsset == null)
            {
                return(null);
            }


            // Deserialize Json.
            var modelJson = JsonUtility.FromJson <CubismModel3Json>(modelJsonAsset);


            // Finalize deserialization.
            modelJson.AssetPath       = assetPath;
            modelJson.LoadAssetAtPath = loadAssetAtPath;


            // Set motion references.
            var value = CubismJsonParser.ParseFromString(modelJsonAsset);

            // Return early if there is no references.
            if (!value.Get("FileReferences").GetMap(null).ContainsKey("Motions"))
            {
                return(modelJson);
            }


            var motionGroupNames = value.Get("FileReferences").Get("Motions").KeySet().ToArray();

            modelJson.FileReferences.Motions.GroupNames = motionGroupNames;

            var motionGroupNamesCount = motionGroupNames.Length;

            modelJson.FileReferences.Motions.Motions = new SerializableMotion[motionGroupNamesCount][];

            for (var i = 0; i < motionGroupNamesCount; i++)
            {
                var motionGroup = value.Get("FileReferences").Get("Motions").Get(motionGroupNames[i]);
                var motionCount = motionGroup.GetVector(null).ToArray().Length;

                modelJson.FileReferences.Motions.Motions[i] = new SerializableMotion[motionCount];


                for (var j = 0; j < motionCount; j++)
                {
                    if (motionGroup.Get(j).GetMap(null).ContainsKey("File"))
                    {
                        modelJson.FileReferences.Motions.Motions[i][j].File = motionGroup.Get(j).Get("File").toString();
                    }

                    if (motionGroup.Get(j).GetMap(null).ContainsKey("FadeInTime"))
                    {
                        modelJson.FileReferences.Motions.Motions[i][j].FadeInTime = motionGroup.Get(j).Get("FadeInTime").ToFloat();
                    }

                    if (motionGroup.Get(j).GetMap(null).ContainsKey("FadeOutTime"))
                    {
                        modelJson.FileReferences.Motions.Motions[i][j].FadeOutTime = motionGroup.Get(j).Get("FadeOutTime").ToFloat();
                    }
                }
            }


            return(modelJson);
        }