Scripts/Editor/Data/WitDataCreation.cs (69 lines of code) (raw):

/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the license found in the * LICENSE file in the root directory of this source tree. */ using System.Globalization; using System.Text.RegularExpressions; using Facebook.WitAi.Configuration; using Facebook.WitAi.Data.Configuration; using UnityEditor; using UnityEngine; namespace Facebook.WitAi.Data { public class WitDataCreation { const string PATH_KEY = "Facebook::Wit::ValuePath"; public static WitConfiguration FindDefaultWitConfig() { string[] guids = AssetDatabase.FindAssets("t:WitConfiguration"); if(guids.Length > 0) { string path = AssetDatabase.GUIDToAssetPath(guids[0]); return AssetDatabase.LoadAssetAtPath<WitConfiguration>(path); } return null; } public static void AddWitToScene() { var witGo = new GameObject { name = "Wit" }; var wit = witGo.AddComponent<Wit>(); var runtimeConfiguration = new WitRuntimeConfiguration() { witConfiguration = FindDefaultWitConfig() }; wit.RuntimeConfiguration = runtimeConfiguration; } public static WitStringValue CreateStringValue(string path) { var asset = ScriptableObject.CreateInstance<WitStringValue>(); CreateValueAsset("Create String Value", path, asset); return asset; } public static WitFloatValue CreateFloatValue(string path) { var asset = ScriptableObject.CreateInstance<WitFloatValue>(); CreateValueAsset("Create Float Value", path, asset); return asset; } public static WitIntValue CreateIntValue(string path) { var asset = ScriptableObject.CreateInstance<WitIntValue>(); CreateValueAsset("Create Int Value", path, asset); return asset; } private static void CreateValueAsset(string label, string path, WitValue asset) { asset.path = path; var saveDir = EditorPrefs.GetString(PATH_KEY, Application.dataPath); string name; if (!string.IsNullOrEmpty(path)) { name = Regex.Replace(path, @"\[[\]0-9]+", ""); name = name.Replace(".", " "); name = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name); } else { name = asset.GetType().Name; } var filePath = EditorUtility.SaveFilePanel(label, saveDir, name, "asset"); if (!string.IsNullOrEmpty(filePath)) { EditorPrefs.SetString(PATH_KEY, filePath); if (filePath.StartsWith(Application.dataPath)) { filePath = filePath.Substring(Application.dataPath.Length - 6); } AssetDatabase.CreateAsset(asset, filePath); AssetDatabase.SaveAssets(); } } } }