/// <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; return(modelJson); }
/// <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); }