Beispiel #1
0
            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);
            }
Beispiel #2
0
 static void ForceRecompile()
 {
     AssetDatabase.ImportAsset(SRInternalEditorUtil.GetAssetPath("StompyRobot.SRDebugger.asmdef"), ImportAssetOptions.ForceUpdate);
 }