Files
sbox-public/engine/Launcher/SboxDev/Launcher.cs
Lorenz Junglas 6808d8768e Shutdown fixes (#3553)
* Stop generating solutions via -test flag add -generatesolution

* Add TestAppSystem remove Application.InitUnitTest

Avoids some hacks and also makes sure our tests are as close to a real AppSystem as possible.

* Add shutdown unit test

shuts down an re-inits the engine

* Properly dispose native resources hold by managed during shutdown

Should fix a bunch of crashes

* Fix filesystem and networking tests

* StandaloneTest does proper Game Close

* Make sure package tests clean up properly

* Make sure menu scene and resources are released on shutdown

* Report leaked scenes on shutdown

* Ensure DestroyImmediate is not used on scenes

* Fix unmounting in unit tests not clearing native refs

* Force destroy native resource on ResourceLib Clear
2025-12-08 15:55:11 +01:00

46 lines
1.2 KiB
C#

using Sandbox.Engine;
using System;
using System.Diagnostics;
using System.Linq;
namespace Sandbox;
public static class Launcher
{
public static int Main()
{
if ( HasCommandLineSwitch( "-generatesolution" ) )
{
NetCore.InitializeInterop( Environment.CurrentDirectory );
Bootstrap.InitMinimal( Environment.CurrentDirectory );
Project.InitializeBuiltIn( false ).GetAwaiter().GetResult();
Project.GenerateSolution().GetAwaiter().GetResult();
Managed.SandboxEngine.NativeInterop.Free();
EngineFileSystem.Shutdown();
return 0;
}
if ( !HasCommandLineSwitch( "-project" ) && !HasCommandLineSwitch( "-test" ) )
{
// we pass the command line, so we can pass it on to the sbox-launcher (for -game etc)
ProcessStartInfo info = new ProcessStartInfo( "sbox-launcher.exe", Environment.CommandLine );
info.UseShellExecute = true;
info.CreateNoWindow = true;
info.WorkingDirectory = System.Environment.CurrentDirectory;
Process.Start( info );
return 0;
}
var appSystem = new EditorAppSystem();
appSystem.Run();
return 0;
}
private static bool HasCommandLineSwitch( string switchName )
{
return Environment.GetCommandLineArgs().Any( arg => arg.Equals( switchName, StringComparison.OrdinalIgnoreCase ) );
}
}