/// <summary> /// Imports the corresponding asset. /// </summary> public override void Import() { // Create expression data. var expressionData = CubismExpressionData.CreateInstance(ExpressionJson); AssetDatabase.CreateAsset(expressionData, AssetPath.Replace(".exp3.json", ".exp3.asset")); // Add expression data to expression list. var directoryName = Path.GetDirectoryName(AssetPath).ToString(); var modelDir = Path.GetDirectoryName(directoryName).ToString(); var modelName = Path.GetFileName(modelDir).ToString(); var expressionListPath = Path.GetDirectoryName(directoryName).ToString() + "/" + modelName + ".expressionList.asset"; var expressionList = AssetDatabase.LoadAssetAtPath <CubismExpressionList>(expressionListPath); // Create expression list. if (expressionList == null) { expressionList = ScriptableObject.CreateInstance <CubismExpressionList>(); expressionList.CubismExpressionObjects = new CubismExpressionData[0]; AssetDatabase.CreateAsset(expressionList, expressionListPath); } var instanceId = expressionData.GetInstanceID(); var motionIndex = Array.IndexOf(expressionList.CubismExpressionObjects, instanceId); if (motionIndex != -1) { expressionList.CubismExpressionObjects[motionIndex] = expressionData; } else { motionIndex = expressionList.CubismExpressionObjects.Length; Array.Resize(ref expressionList.CubismExpressionObjects, motionIndex + 1); expressionList.CubismExpressionObjects[motionIndex] = expressionData; } EditorUtility.SetDirty(expressionList); }
/// <summary> /// Imports the corresponding asset. /// </summary> public override void Import() { var oldExpressionData = AssetDatabase.LoadAssetAtPath <CubismExpressionData>(AssetPath.Replace(".exp3.json", ".exp3.asset")); // Create expression data. CubismExpressionData expressionData; if (oldExpressionData == null) { expressionData = CubismExpressionData.CreateInstance(ExpressionJson); AssetDatabase.CreateAsset(expressionData, AssetPath.Replace(".exp3.json", ".exp3.asset")); } else { expressionData = CubismExpressionData.CreateInstance(oldExpressionData, ExpressionJson); EditorUtility.CopySerialized(expressionData, oldExpressionData); expressionData = oldExpressionData; } EditorUtility.SetDirty(expressionData); // Add expression data to expression list. var directoryName = Path.GetDirectoryName(AssetPath).ToString(); var modelDir = Path.GetDirectoryName(directoryName).ToString(); var modelName = Path.GetFileName(modelDir).ToString(); var expressionListPath = Path.GetDirectoryName(directoryName).ToString() + "/" + modelName + ".expressionList.asset"; var expressionList = AssetDatabase.LoadAssetAtPath <CubismExpressionList>(expressionListPath); // Create expression list. if (expressionList == null) { expressionList = ScriptableObject.CreateInstance <CubismExpressionList>(); expressionList.CubismExpressionObjects = new CubismExpressionData[0]; AssetDatabase.CreateAsset(expressionList, expressionListPath); } // Finde index. var expressionName = Path.GetFileName(AssetPath).Replace(".json", ""); var expressionIndex = -1; for (var i = 0; i < expressionList.CubismExpressionObjects.Length; ++i) { var expression = expressionList.CubismExpressionObjects[i]; if (expression == null || expression.name != expressionName) { continue; } expressionIndex = i; break; } // Set expression data. if (expressionIndex != -1) { expressionList.CubismExpressionObjects[expressionIndex] = expressionData; } else { expressionIndex = expressionList.CubismExpressionObjects.Length; Array.Resize(ref expressionList.CubismExpressionObjects, expressionIndex + 1); expressionList.CubismExpressionObjects[expressionIndex] = expressionData; } EditorUtility.SetDirty(expressionList); }