private static SettingsResult InternalTryGetOrCreateSettings(out Settings instance, out string message) { instance = null; message = null; if (EditorApplication.isPlaying || EditorApplication.isPlayingOrWillChangePlaymode) { message = "Settings can only be modified while in edit-mode. Exit play mode to make changes to SRDebugger settings."; return(SettingsResult.Waiting); } // If compiling, wait for that to finish. We might be disabling/enabling SRDebugger and don't want to recreate the settings while that is in progress. if (EditorApplication.isCompiling || EditorApplication.isUpdating) { message = "Waiting for Unity to finish compiling/updating..."; return(SettingsResult.Waiting); } // Check if there is a 'disabled' settings file, we don't want to create a new settings file if a disabled one exists. string disabledSettingsFile = SRInternalEditorUtil.GetAssetPath(DisabledSettingsFilePath); if (File.Exists(disabledSettingsFile)) { message = "A settings file already exists but is disabled. Please ensure SRDebugger is correctly enabled or disabled."; return(SettingsResult.Error); } // Get resources folder path var settingsAssetPath = SRInternalEditorUtil.GetAssetPath(SettingsFilePath); // Load existing asset. if (File.Exists(settingsAssetPath)) { instance = AssetDatabase.LoadAssetAtPath <Settings>(settingsAssetPath); if (instance == null) { message = "Error loading settings asset."; return(SettingsResult.Error); } return(SettingsResult.Loaded); } Debug.Log("[SRDebugger] Creating settings asset at {0}".Fmt(settingsAssetPath)); instance = ScriptableObject.CreateInstance <Settings>(); string containingDirectory = Path.GetDirectoryName(settingsAssetPath); if (containingDirectory == null) { message = "Error finding target settings directory."; return(SettingsResult.Error); } // Create directory if it doesn't exist Directory.CreateDirectory(containingDirectory); // Save instance if in editor AssetDatabase.CreateAsset(instance, settingsAssetPath); return(SettingsResult.Loaded); }
static void ForceRecompile() { AssetDatabase.ImportAsset(SRInternalEditorUtil.GetAssetPath("StompyRobot.SRDebugger.asmdef"), ImportAssetOptions.ForceUpdate); }