@@ -9,20 +9,17 @@ import com.intellij.execution.process.*
99import com.intellij.execution.runners.ExecutionEnvironment
1010import com.intellij.openapi.options.SettingsEditor
1111import com.intellij.openapi.project.Project
12- import com.intellij.openapi.rd.util.startOnUiAsync
13- import com.intellij.openapi.rd.util.toPromise
14- import com.jetbrains.rd.platform.util.lifetime
12+ import com.intellij.util.system.OS
1513import com.jetbrains.rider.debugger.IRiderDebuggable
1614import com.jetbrains.rider.plugins.unity.run.configurations.UnityAttachToPlayerFactory
1715import com.jetbrains.rider.plugins.unity.run.configurations.UnityPlayerDebugConfigurationOptions
1816import com.jetbrains.rider.run.configurations.AsyncRunConfiguration
19- import com.jetbrains.rider.run.getProcess
20- import kotlinx.coroutines.ExperimentalCoroutinesApi
2117import org.jetbrains.concurrency.Promise
2218import com.jetbrains.rider.plugins.unity.UnityBundle
2319import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfiguration
2420import com.jetbrains.rider.run.RiderRunBundle
2521import icons.UnityIcons
22+ import kotlin.io.path.Path
2623
2724
2825internal class UnityPlayerDebugConfigurationTypeInternal : ConfigurationTypeBase (
@@ -111,7 +108,7 @@ class RunConfiguration(project: Project, factory: ConfigurationFactory, name: St
111108 getScriptName(),
112109 getSaveFilePath(),
113110 getModListPath(),
114- getRimworldState(environment),
111+ getRimworldState(environment, OS . CURRENT == OS . Linux ),
115112 UnityDebugRemoteConfiguration (),
116113 environment,
117114 " CustomPlayer"
@@ -122,11 +119,21 @@ class RunConfiguration(project: Project, factory: ConfigurationFactory, name: St
122119 return RimworldDev .Rider .run.SettingsEditor (project)
123120 }
124121
125- private fun getRimworldState (environment : ExecutionEnvironment ): CommandLineState {
122+ private fun getRimworldState (environment : ExecutionEnvironment , debugInLinux : Boolean = false ): CommandLineState {
126123 return object : CommandLineState (environment) {
127124 override fun startProcess (): ProcessHandler {
128- val commandLine = GeneralCommandLine (getScriptName())
129- .withParameters(getCommandLineOptions().split(' ' ))
125+ var pathToRun = getScriptName()
126+ var arguments = getCommandLineOptions()
127+
128+ // If we're debugging in Rimworld, instead of /pwd/RimWorldLinux ...args we want to run /bin/sh /pwd/run.sh /pwd/RimWorldLinux ...args
129+ if (debugInLinux) {
130+ val bashScriptPath = " ${Path (pathToRun).parent} /run.sh"
131+ arguments = " $bashScriptPath $pathToRun $arguments "
132+ pathToRun = " /bin/sh"
133+ }
134+
135+ val commandLine = GeneralCommandLine (pathToRun)
136+ .withParameters(arguments.split(' ' ).filter { it.isNotEmpty() })
130137
131138 EnvironmentVariablesData .create(getEnvData(), true ).configureCommandLine(commandLine, true )
132139
0 commit comments