protected override void Enable(BaseMightyMember mightyMember, ScriptIconAttribute mightyAttribute) { if (!m_alreadyEnabled) { m_databaseDirectoryPath = Path.Combine(FileUtilities.GetAbsoluteScriptPathByType(typeof(MightyDrawersDatabase), false), "ScriptIcons"); m_databaseFilePath = Path.Combine(m_databaseDirectoryPath, "ScriptIconsDatabase.json"); } if (!Directory.Exists(m_databaseDirectoryPath)) { m_alreadyEnabled = false; Directory.CreateDirectory(m_databaseDirectoryPath); } if (!File.Exists(m_databaseFilePath)) { m_alreadyEnabled = false; File.Create(m_databaseFilePath); } if (!m_alreadyEnabled) { m_database = ReadDatabase(); m_scriptIconByType = ExtractDatabase(m_database); } m_alreadyEnabled = true; }
private ScriptIconsDatabase ReadDatabase() { var database = new ScriptIconsDatabase(); EditorJsonUtility.FromJsonOverwrite(File.ReadAllText(m_databaseFilePath), database); return(database); }
private Dictionary <Type, ScriptIcon> ExtractDatabase(ScriptIconsDatabase database) { var scriptIconByType = new Dictionary <Type, ScriptIcon>(); if (database.scriptIcons == null) { return(scriptIconByType); } foreach (var icon in database.scriptIcons) { if (!TypeUtilities.GetTypeInAssembly(icon.GetTypeName(), icon.GetAssemblyName(), out var type)) { continue; } icon.SetType(type); scriptIconByType[type] = icon; } return(scriptIconByType); }
private void WriteDatabase(ScriptIconsDatabase database) => File.WriteAllText(DatabaseFilePath, EditorJsonUtility.ToJson(database, true));