internal static bool TryGetSettings(out ApexSettings settings) { if (_instance != null) { settings = _instance; return(true); } var apexRoot = AssetPath.GetApexRoot(false); var dataFolder = AssetPath.GetApexDataFolder(false); var relativeDataFolder = AssetPath.GetApexDataFolder(true); string settingsPath = AssetPath.Combine(relativeDataFolder, "ApexSettings.asset"); AssetPath.EnsurePath(relativeDataFolder); _instance = AssetDatabase.LoadAssetAtPath(settingsPath, typeof(ApexSettings)) as ApexSettings; bool settingsFound = (_instance != null); if (!settingsFound) { _instance = ScriptableObject.CreateInstance <ApexSettings>(); AssetDatabase.CreateAsset(_instance, settingsPath); AssetDatabase.SaveAssets(); } _instance.rootFolder = apexRoot; _instance.dataFolder = dataFolder; _instance.relativeDataFolder = relativeDataFolder; settings = _instance; return(settingsFound); }
internal static void WriteNameMapFile() { var targetFolder = AIGeneralSettings.instance.nameMapPath; if (string.IsNullOrEmpty(targetFolder)) { targetFolder = AssetPath.GetApexRoot(true); AIGeneralSettings.instance.nameMapPath = targetFolder; AIGeneralSettings.instance.SaveChanges(); } targetFolder = AssetPath.GetFullPath(targetFolder); if (!Directory.Exists(targetFolder)) { Debug.LogWarning("Unable to create name map, please setup a target folder under settings."); return; } var filePath = AssetPath.Combine(targetFolder, AIGeneralSettings.NameMapFileName); var b = new StringBuilder(); var aiList = StoredAIs.AIs; var count = aiList.count; for (int i = 0; i < count; i++) { var name = correctName(aiList[i].name); if (name != null) { b.AppendFormat(Template.ItemTemplate, name, aiList[i].aiId); b.AppendLine(); } } using (var writer = new StreamWriter(filePath)) { writer.WriteLine(Template.FileTemplate, b); } AssetDatabase.Refresh(); }