diff --git a/Facepunch.Steamworks.Test/AppTest.cs b/Facepunch.Steamworks.Test/AppTest.cs index d765728..447a1e5 100644 --- a/Facepunch.Steamworks.Test/AppTest.cs +++ b/Facepunch.Steamworks.Test/AppTest.cs @@ -14,6 +14,13 @@ namespace Steamworks [AssemblyInitialize] public static void AssemblyInit( TestContext context ) { + Steamworks.SteamClient.OnCallbackException = ( e ) => + { + Console.Error.WriteLine( e.Message ); + Console.Error.WriteLine( e.StackTrace ); + Assert.Fail( e.Message ); + }; + // // Init Client // diff --git a/Facepunch.Steamworks/SteamClient.cs b/Facepunch.Steamworks/SteamClient.cs index 206435f..4ccd798 100644 --- a/Facepunch.Steamworks/SteamClient.cs +++ b/Facepunch.Steamworks/SteamClient.cs @@ -48,6 +48,8 @@ namespace Steamworks RunCallbacksAsync(); } + public static Action OnCallbackException; + public static bool IsValid => initialized; internal static async void RunCallbacksAsync() @@ -55,14 +57,7 @@ namespace Steamworks while ( IsValid ) { await Task.Delay( 16 ); - try - { - SteamAPI.RunCallbacks(); - } - catch ( System.Exception ) - { - // TODO - error outputs - } + RunCallbacks(); } } @@ -98,7 +93,14 @@ namespace Steamworks public static void RunCallbacks() { - SteamAPI.RunCallbacks(); + try + { + SteamAPI.RunCallbacks(); + } + catch ( System.Exception e ) + { + OnCallbackException?.Invoke( e ); + } } internal static void UnregisterCallback( IntPtr intPtr )