diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs
index b6745756..2b1a7b55 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamAppList : SteamInterface
+ internal unsafe partial class ISteamAppList : SteamInterface
{
internal ISteamAppList( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs
index 2888c398..8c5c53a9 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamApps : SteamInterface
+ internal unsafe partial class ISteamApps : SteamInterface
{
internal ISteamApps( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs
index 418f5dab..dd8cc2e2 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamClient : SteamInterface
+ internal unsafe partial class ISteamClient : SteamInterface
{
internal ISteamClient( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs
index d93dccff..d0fafb9d 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamController : SteamInterface
+ internal unsafe partial class ISteamController : SteamInterface
{
internal ISteamController( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs
index b8e5cd44..16a1ff2b 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamFriends : SteamInterface
+ internal unsafe partial class ISteamFriends : SteamInterface
{
internal ISteamFriends( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs
index 3c70b84f..930c8886 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamGameSearch : SteamInterface
+ internal unsafe partial class ISteamGameSearch : SteamInterface
{
internal ISteamGameSearch( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs
index b80a6953..2e506b2d 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamGameServer : SteamInterface
+ internal unsafe partial class ISteamGameServer : SteamInterface
{
internal ISteamGameServer( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs
index de293cbe..3dd98388 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamGameServerStats : SteamInterface
+ internal unsafe partial class ISteamGameServerStats : SteamInterface
{
internal ISteamGameServerStats( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs
index 38c6b462..dde249ba 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamHTMLSurface : SteamInterface
+ internal unsafe partial class ISteamHTMLSurface : SteamInterface
{
internal ISteamHTMLSurface( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs
index 599054b5..3708f7c7 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamHTTP : SteamInterface
+ internal unsafe partial class ISteamHTTP : SteamInterface
{
internal ISteamHTTP( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs
index 3d1ab522..e5c82b89 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamInput : SteamInterface
+ internal unsafe partial class ISteamInput : SteamInterface
{
internal ISteamInput( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs
index c5ea02c4..19d425bf 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamInventory : SteamInterface
+ internal unsafe partial class ISteamInventory : SteamInterface
{
internal ISteamInventory( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs
index 801d4108..043b4477 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMatchmaking : SteamInterface
+ internal unsafe partial class ISteamMatchmaking : SteamInterface
{
internal ISteamMatchmaking( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs
index 0306b76f..9e95435c 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMatchmakingPingResponse : SteamInterface
+ internal unsafe partial class ISteamMatchmakingPingResponse : SteamInterface
{
internal ISteamMatchmakingPingResponse( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs
index a5ed9269..8d73d6bd 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMatchmakingPlayersResponse : SteamInterface
+ internal unsafe partial class ISteamMatchmakingPlayersResponse : SteamInterface
{
internal ISteamMatchmakingPlayersResponse( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs
index 78507b9e..431e8771 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMatchmakingRulesResponse : SteamInterface
+ internal unsafe partial class ISteamMatchmakingRulesResponse : SteamInterface
{
internal ISteamMatchmakingRulesResponse( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs
index 8fd0a9e9..e33a65e6 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMatchmakingServerListResponse : SteamInterface
+ internal unsafe partial class ISteamMatchmakingServerListResponse : SteamInterface
{
internal ISteamMatchmakingServerListResponse( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs
index 6f9ee8b3..65c371f7 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMatchmakingServers : SteamInterface
+ internal unsafe partial class ISteamMatchmakingServers : SteamInterface
{
internal ISteamMatchmakingServers( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs
index 6534a83c..41ddceea 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMusic : SteamInterface
+ internal unsafe partial class ISteamMusic : SteamInterface
{
internal ISteamMusic( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs
index cf735028..ab6826b2 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamMusicRemote : SteamInterface
+ internal unsafe partial class ISteamMusicRemote : SteamInterface
{
internal ISteamMusicRemote( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs
index f1495578..3633e6b0 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamNetworking : SteamInterface
+ internal unsafe partial class ISteamNetworking : SteamInterface
{
internal ISteamNetworking( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs
index 776ab8a6..ebf730b3 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamNetworkingFakeUDPPort : SteamInterface
+ internal unsafe partial class ISteamNetworkingFakeUDPPort : SteamInterface
{
internal ISteamNetworkingFakeUDPPort( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs
index 715c34a1..5c6daedb 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamNetworkingMessages : SteamInterface
+ internal unsafe partial class ISteamNetworkingMessages : SteamInterface
{
internal ISteamNetworkingMessages( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs
index 6a0e8588..c3979ca0 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamNetworkingSockets : SteamInterface
+ internal unsafe partial class ISteamNetworkingSockets : SteamInterface
{
internal ISteamNetworkingSockets( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs
index 50d6d7d3..22b1e6d6 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamNetworkingUtils : SteamInterface
+ internal unsafe partial class ISteamNetworkingUtils : SteamInterface
{
internal ISteamNetworkingUtils( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs
index 56bfb1e6..8ec9c09e 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamParentalSettings : SteamInterface
+ internal unsafe partial class ISteamParentalSettings : SteamInterface
{
internal ISteamParentalSettings( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs
index e9585ec8..d11fd337 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamParties : SteamInterface
+ internal unsafe partial class ISteamParties : SteamInterface
{
internal ISteamParties( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs
index 6ad42043..2f39931f 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamRemotePlay : SteamInterface
+ internal unsafe partial class ISteamRemotePlay : SteamInterface
{
internal ISteamRemotePlay( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs
index c1a87211..2fdda846 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamRemoteStorage : SteamInterface
+ internal unsafe partial class ISteamRemoteStorage : SteamInterface
{
internal ISteamRemoteStorage( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs
index ff9380a3..e1fd7567 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamScreenshots : SteamInterface
+ internal unsafe partial class ISteamScreenshots : SteamInterface
{
internal ISteamScreenshots( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs
index 758020c6..1c54bc14 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamUGC : SteamInterface
+ internal unsafe partial class ISteamUGC : SteamInterface
{
internal ISteamUGC( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs
index 18147edf..35eb5f9b 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamUser : SteamInterface
+ internal unsafe partial class ISteamUser : SteamInterface
{
internal ISteamUser( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs
index ab98ca63..ae3f3a50 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamUserStats : SteamInterface
+ internal unsafe partial class ISteamUserStats : SteamInterface
{
internal ISteamUserStats( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs
index f0a4cf54..83f1abc4 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamUtils : SteamInterface
+ internal unsafe partial class ISteamUtils : SteamInterface
{
internal ISteamUtils( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs
index bd4d029a..137e2144 100644
--- a/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs
+++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs
@@ -7,7 +7,7 @@
namespace Steamworks
{
- internal unsafe class ISteamVideo : SteamInterface
+ internal unsafe partial class ISteamVideo : SteamInterface
{
internal ISteamVideo( bool IsGameServer )
diff --git a/Facepunch.Steamworks/Interfaces/ISteamMatchmakingServers.cs b/Facepunch.Steamworks/Interfaces/ISteamMatchmakingServers.cs
new file mode 100644
index 00000000..070ee12e
--- /dev/null
+++ b/Facepunch.Steamworks/Interfaces/ISteamMatchmakingServers.cs
@@ -0,0 +1,42 @@
+using Steamworks.Data;
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace Steamworks
+{
+ internal partial class ISteamMatchmakingServers
+ {
+ // Cached offset of gameserveritem_t.m_bHadSuccessfulResponse
+ private static int hasSuccessfulResponseOffset;
+
+ ///
+ /// Read gameserveritem_t.m_bHadSuccessfulResponse without allocating the struct on the heap
+ ///
+ ///
+ ///
+ ///
+ internal bool HasServerResponded( HServerListRequest hRequest, int iServer )
+ {
+ IntPtr returnValue = _GetServerDetails( Self, hRequest, iServer );
+
+ // Return false if steam returned null
+ if ( returnValue == IntPtr.Zero ) return false;
+
+ // Cache the offset of m_bHadSuccessfulResponse
+ if ( hasSuccessfulResponseOffset == 0 )
+ {
+ hasSuccessfulResponseOffset = Marshal.OffsetOf( nameof( gameserveritem_t.HadSuccessfulResponse ) ).ToInt32();
+
+ if ( hasSuccessfulResponseOffset == 0 )
+ {
+ throw new Exception( "Failed to get offset of gameserveritem_t.HadSuccessfulResponse" );
+ }
+ }
+
+ // Read byte m_bHadSuccessfulResponse
+ return Marshal.ReadByte( IntPtr.Add( returnValue, hasSuccessfulResponseOffset ) ) == 1;
+ }
+ }
+}
diff --git a/Facepunch.Steamworks/ServerList/Base.cs b/Facepunch.Steamworks/ServerList/Base.cs
index caf70893..182c1588 100644
--- a/Facepunch.Steamworks/ServerList/Base.cs
+++ b/Facepunch.Steamworks/ServerList/Base.cs
@@ -162,11 +162,17 @@ public void UpdateResponsive()
{
watchList.RemoveAll( x =>
{
- var info = Internal.GetServerDetails( request, x );
- if ( info.HadSuccessfulResponse )
+ // First check if the server has responded without allocating server info
+ bool hasResponded = Internal.HasServerResponded( request, x );
+ if ( hasResponded )
{
- OnServer( ServerInfo.From( info ), info.HadSuccessfulResponse );
- return true;
+ // Now get all server info
+ var info = Internal.GetServerDetails( request, x );
+ if ( info.HadSuccessfulResponse )
+ {
+ OnServer( ServerInfo.From( info ), info.HadSuccessfulResponse );
+ return true;
+ }
}
return false;
diff --git a/Generator/CodeWriter/Interface.cs b/Generator/CodeWriter/Interface.cs
index 790ec4c2..84db168e 100644
--- a/Generator/CodeWriter/Interface.cs
+++ b/Generator/CodeWriter/Interface.cs
@@ -23,7 +23,7 @@ public void GenerateInterface( SteamApiDefinition.Interface iface, string folder
StartBlock( $"namespace Steamworks" );
{
- StartBlock( $"internal unsafe class {iface.Name} : SteamInterface" );
+ StartBlock( $"internal unsafe partial class {iface.Name} : SteamInterface" );
{
WriteLine();
StartBlock( $"internal {iface.Name}( bool IsGameServer )" );