diff --git a/Facepunch.Steamworks/SteamNetworking.cs b/Facepunch.Steamworks/SteamNetworking.cs
index ee1ceef..41b592d 100644
--- a/Facepunch.Steamworks/SteamNetworking.cs
+++ b/Facepunch.Steamworks/SteamNetworking.cs
@@ -91,10 +91,10 @@ public static bool IsP2PPacketAvailable( int channel = 0 )
var buffer = Helpers.TakeBuffer( (int) size );
fixed ( byte* p = buffer )
- {
- SteamId steamid = 1;
- if ( !Internal.ReadP2PPacket( (IntPtr)p, (uint) buffer.Length, ref size, ref steamid, channel ) || size == 0 )
- return null;
+ {
+ SteamId steamid = 1;
+ if ( !Internal.ReadP2PPacket( (IntPtr)p, (uint) buffer.Length, ref size, ref steamid, channel ) || size == 0 )
+ return null;
var data = new byte[size];
Array.Copy( buffer, 0, data, 0, size );
@@ -104,7 +104,25 @@ public static bool IsP2PPacketAvailable( int channel = 0 )
SteamId = steamid,
Data = data
};
- }
+ }
+ }
+
+ ///
+ /// Reads in a packet that has been sent from another user via SendP2PPacket..
+ ///
+ public unsafe static bool ReadP2PPacket( byte[] buffer, ref uint size, ref SteamId steamid, int channel = 0 )
+ {
+ fixed (byte* p = buffer) {
+ return Internal.ReadP2PPacket( (IntPtr)p, (uint)buffer.Length, ref size, ref steamid, channel );
+ }
+ }
+
+ ///
+ /// Reads in a packet that has been sent from another user via SendP2PPacket..
+ ///
+ public unsafe static bool ReadP2PPacket( byte* buffer, uint cbuf, ref uint size, ref SteamId steamid, int channel = 0 )
+ {
+ return Internal.ReadP2PPacket( (IntPtr)buffer, cbuf, ref size, ref steamid, channel );
}
///
@@ -123,6 +141,15 @@ public static unsafe bool SendP2PPacket( SteamId steamid, byte[] data, int lengt
}
}
+ ///
+ /// Sends a P2P packet to the specified user.
+ /// This is a session-less API which automatically establishes NAT-traversing or Steam relay server connections.
+ /// NOTE: The first packet send may be delayed as the NAT-traversal code runs.
+ ///
+ public static unsafe bool SendP2PPacket( SteamId steamid, byte* data, uint length, int nChannel = 1, P2PSend sendType = P2PSend.Reliable )
+ {
+ return Internal.SendP2PPacket( steamid, (IntPtr)data, (uint)length, (P2PSend)sendType, nChannel );
+ }
}
-}
\ No newline at end of file
+}