override fun beforeAllDocumentsSaving()

in rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/GodotFileDocumentManagerListener.kt [24:50]


    override fun beforeAllDocumentsSaving() {
        val projectManager = serviceIfCreated<ProjectManager>() ?: return
        val openedGodotProjects = projectManager.openProjects.filter { !it.isDisposed
                                                                       && (GodotProjectDiscoverer.getInstance(it).isGodotProject.valueOrDefault(false))
                                                                       && (GodotProjectDiscoverer.getInstance(it).godotDescriptor.valueOrNull?.isPureGdScriptProject == false)

        }.toList()
        for (project in openedGodotProjects)
            application.invokeLater {
                if (project.isDisposed) return@invokeLater
                val buildAutomatically = project.solution.godotFrontendBackendModel.backendSettings.buildAutomatically.valueOrDefault(false)
                if (!buildAutomatically) return@invokeLater
                // it makes no sense to build, if Godot is not running
                if (project.solution.godotFrontendBackendModel.editorState.valueOrDefault(GodotEditorState.Disconnected) != GodotEditorState.Connected)
                    return@invokeLater
                val isActive = project.protocolHostIfExists?.protocol?.rdShellModel?.isApplicationActive?.valueOrNull
                if (isActive != null && !isActive) {
                    val buildHost = BuildHost.getInstance(project)
                    if (buildHost.ready.value && !buildHost.building.value) {
                        val mainProjectPath = GodotProjectDiscoverer.getInstance(project).godotDescriptor.valueOrNull?.mainProjectPath ?: return@invokeLater
                        buildHost.requestBuild(BuildParameters(BuildTarget(), listOf(mainProjectPath), silentMode = true)) {
                            showAutoBuildNotification(project)
                        }
                    }
                }
            }
    }