@@ -80,13 +80,38 @@ bool PyUnicodeOrString_Check(PyObject *py_obj)
8080
8181void FUnrealEnginePythonModule::UESetupPythonInterpreter (bool verbose)
8282{
83+ const TCHAR * CommandLine = FCommandLine::GetOriginal ();
84+ const SIZE_T CommandLineSize = FCString::Strlen (CommandLine) + 1 ;
85+ TCHAR * CommandLineCopy = new TCHAR [CommandLineSize];
86+ FCString::Strcpy (CommandLineCopy, CommandLineSize, CommandLine);
87+ const TCHAR * ParsedCmdLine = CommandLineCopy;
8388
89+ TArray<FString> Args;
90+ for (;;)
91+ {
92+ FString Arg = FParse::Token (ParsedCmdLine, 0 );
93+ if (Arg.Len () <= 0 )
94+ break ;
95+ Args.Add (Arg);
96+ }
97+
98+ #if PY_MAJOR_VERSION >= 3
99+ wchar_t **argv = (wchar_t **)FMemory::Malloc (sizeof (wchar_t *) * (Args.Num () + 1 ));
100+ #else
101+ char **argv = (char **)FMemory::Malloc (sizeof (char *) * (Args.Num () + 1 ));
102+ #endif
103+ argv[Args.Num ()] = nullptr ;
104+
105+ for (int32 i = 0 ; i < Args.Num (); i++)
106+ {
84107#if PY_MAJOR_VERSION >= 3
85- wchar_t * argv[] = { UTF8_TO_TCHAR ( " UnrealEngine " ), NULL } ;
108+ argv[i ] = ( wchar_t *)(*Args[i]) ;
86109#else
87- char * argv[] = { ( char *) " UnrealEngine " , NULL } ;
110+ argv[i ] = TCHAR_TO_UTF8 (*Args[i]) ;
88111#endif
89- PySys_SetArgv (1 , argv);
112+ }
113+
114+ PySys_SetArgv (Args.Num (), argv);
90115
91116 unreal_engine_init_py_module ();
92117
@@ -387,11 +412,11 @@ void FUnrealEnginePythonModule::StartupModule()
387412#else
388413 unreal_engine_py_log_error ();
389414#endif
390- }
415+ }
391416
392417 // release the GIL
393418 PyThreadState *UEPyGlobalState = PyEval_SaveThread ();
394- }
419+ }
395420
396421void FUnrealEnginePythonModule::ShutdownModule ()
397422{
@@ -422,16 +447,16 @@ void FUnrealEnginePythonModule::RunString(char *str)
422447#if PLATFORM_MAC
423448void FUnrealEnginePythonModule::RunStringInMainThread (char *str)
424449{
425- MainThreadCall (^{
426- RunString (str);
427- });
450+ MainThreadCall (^{
451+ RunString (str);
452+ });
428453}
429454
430455void FUnrealEnginePythonModule::RunFileInMainThread (char *filename)
431456{
432- MainThreadCall (^{
433- RunFile (filename);
434- });
457+ MainThreadCall (^{
458+ RunFile (filename);
459+ });
435460}
436461#endif
437462
0 commit comments