static VRM10Expression CreateAndSaveExpression(ExpressionPreset preset, string dir) { var clip = ScriptableObject.CreateInstance <VRM10Expression>(); clip.name = preset.ToString(); var path = System.IO.Path.Combine(dir, $"{preset}.asset"); var unityPath = UnityPath.FromFullpath(path); unityPath.CreateAsset(clip); var loaded = unityPath.LoadAsset <VRM10Expression>(); return(loaded); }
static VRM10Object CreateAsset(string path) { if (string.IsNullOrEmpty(path)) { return(null); } var unityPath = UnityPath.FromFullpath(path); if (!unityPath.IsUnderAssetsFolder) { EditorUtility.DisplayDialog("error", "The specified path is not inside of Assets/", "OK"); return(null); } var asset = ScriptableObject.CreateInstance <VRM10Object>(); unityPath.CreateAsset(asset); var loaded = unityPath.LoadAsset <VRM10Object>(); return(loaded); }
static string ToAssetPath(string path) { var assetPath = UnityPath.FromFullpath(path); return(assetPath.Value); }
static VRM10Object CreateAsset(string path, Dictionary <ExpressionPreset, VRM10Expression> expressions) { if (string.IsNullOrEmpty(path)) { return(null); } var unityPath = UnityPath.FromFullpath(path); if (!unityPath.IsUnderAssetsFolder) { EditorUtility.DisplayDialog("error", "The specified path is not inside of Assets/", "OK"); return(null); } var asset = ScriptableObject.CreateInstance <VRM10Object>(); foreach (var kv in expressions) { switch (kv.Key) { case ExpressionPreset.aa: asset.Expression.Aa = kv.Value; break; case ExpressionPreset.ih: asset.Expression.Ih = kv.Value; break; case ExpressionPreset.ou: asset.Expression.Ou = kv.Value; break; case ExpressionPreset.ee: asset.Expression.Ee = kv.Value; break; case ExpressionPreset.oh: asset.Expression.Oh = kv.Value; break; case ExpressionPreset.happy: asset.Expression.Happy = kv.Value; break; case ExpressionPreset.angry: asset.Expression.Angry = kv.Value; break; case ExpressionPreset.sad: asset.Expression.Sad = kv.Value; break; case ExpressionPreset.relaxed: asset.Expression.Relaxed = kv.Value; break; case ExpressionPreset.surprised: asset.Expression.Surprised = kv.Value; break; case ExpressionPreset.blink: asset.Expression.Blink = kv.Value; break; case ExpressionPreset.blinkLeft: asset.Expression.BlinkLeft = kv.Value; break; case ExpressionPreset.blinkRight: asset.Expression.BlinkRight = kv.Value; break; case ExpressionPreset.lookUp: asset.Expression.LookUp = kv.Value; break; case ExpressionPreset.lookDown: asset.Expression.LookDown = kv.Value; break; case ExpressionPreset.lookLeft: asset.Expression.LookLeft = kv.Value; break; case ExpressionPreset.lookRight: asset.Expression.LookRight = kv.Value; break; case ExpressionPreset.neutral: asset.Expression.Neutral = kv.Value; break; } } unityPath.CreateAsset(asset); AssetDatabase.Refresh(); var loaded = unityPath.LoadAsset <VRM10Object>(); return(loaded); }