Skip to content

Commit 3c1fb5d

Browse files
committed
V5.0.6
1 parent d020eff commit 3c1fb5d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+8569
-43
lines changed

BeatSaberPlus/BeatSaberPlus.csproj

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
<DebugSymbols>true</DebugSymbols>
2525
<Optimize>false</Optimize>
2626
<OutputPath>bin\Debug\</OutputPath>
27-
<DefineConstants>TRACE;DEBUG;CP_SDK_IPA;CP_SDK_UNITY</DefineConstants>
27+
<DefineConstants>TRACE;DEBUG;CP_SDK_IPA;CP_SDK_UNITY;UNITY_5_3_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2019_1_OR_NEWER UNITY_STANDALONE_WIN;UNITY_2018_3_OR_NEWER;NETSTANDARD</DefineConstants>
2828
<ErrorReport>prompt</ErrorReport>
2929
<WarningLevel>4</WarningLevel>
3030
</PropertyGroup>
3131
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
3232
<Optimize>true</Optimize>
3333
<OutputPath>bin\Release\</OutputPath>
34-
<DefineConstants>CP_SDK_IPA;CP_SDK_UNITY</DefineConstants>
34+
<DefineConstants>CP_SDK_IPA;CP_SDK_UNITY;UNITY_5_3_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2019_1_OR_NEWER UNITY_STANDALONE_WIN;UNITY_2018_3_OR_NEWER;NETSTANDARD</DefineConstants>
3535
<ErrorReport>prompt</ErrorReport>
3636
<WarningLevel>4</WarningLevel>
3737
</PropertyGroup>
@@ -117,6 +117,11 @@
117117
<HintPath>$(BeatSaberDir)\Beat Saber_Data\Managed\System.IO.Compression.FileSystem.dll</HintPath>
118118
</Reference>
119119
<Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
120+
<Reference Include="System.Runtime.Serialization">
121+
<HintPath>$(BeatSaberDir)\Beat Saber_Data\Managed\System.Runtime.Serialization.dll</HintPath>
122+
<Private>False</Private>
123+
<SpecificVersion>False</SpecificVersion>
124+
</Reference>
120125
<Reference Include="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
121126
<HintPath>$(BeatSaberDir)\Beat Saber_Data\Managed\System.Web.dll</HintPath>
122127
<Private>False</Private>
@@ -237,6 +242,33 @@
237242
<Compile Include="CP_SDK\ModuleBase.cs" />
238243
<Compile Include="CP_SDK\Network\APIClient.cs" />
239244
<Compile Include="CP_SDK\Network\APIResponse.cs" />
245+
<Compile Include="CP_SDK\Network\LiteNetLib\BaseChannel.cs" />
246+
<Compile Include="CP_SDK\Network\LiteNetLib\ConnectionRequest.cs" />
247+
<Compile Include="CP_SDK\Network\LiteNetLib\INetEventListener.cs" />
248+
<Compile Include="CP_SDK\Network\LiteNetLib\Layers\Crc32cLayer.cs" />
249+
<Compile Include="CP_SDK\Network\LiteNetLib\Layers\PacketLayerBase.cs" />
250+
<Compile Include="CP_SDK\Network\LiteNetLib\Layers\XorEncryptLayer.cs" />
251+
<Compile Include="CP_SDK\Network\LiteNetLib\NatPunchModule.cs" />
252+
<Compile Include="CP_SDK\Network\LiteNetLib\NetConstants.cs" />
253+
<Compile Include="CP_SDK\Network\LiteNetLib\NetDebug.cs" />
254+
<Compile Include="CP_SDK\Network\LiteNetLib\NetManager.cs" />
255+
<Compile Include="CP_SDK\Network\LiteNetLib\NetPacket.cs" />
256+
<Compile Include="CP_SDK\Network\LiteNetLib\NetPacketPool.cs" />
257+
<Compile Include="CP_SDK\Network\LiteNetLib\NetPeer.cs" />
258+
<Compile Include="CP_SDK\Network\LiteNetLib\NetSocket.cs" />
259+
<Compile Include="CP_SDK\Network\LiteNetLib\NetStatistics.cs" />
260+
<Compile Include="CP_SDK\Network\LiteNetLib\NetUtils.cs" />
261+
<Compile Include="CP_SDK\Network\LiteNetLib\ReliableChannel.cs" />
262+
<Compile Include="CP_SDK\Network\LiteNetLib\SequencedChannel.cs" />
263+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\CRC32C.cs" />
264+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\FastBitConverter.cs" />
265+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\INetSerializable.cs" />
266+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\NetDataReader.cs" />
267+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\NetDataWriter.cs" />
268+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\NetPacketProcessor.cs" />
269+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\NetSerializer.cs" />
270+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\NtpPacket.cs" />
271+
<Compile Include="CP_SDK\Network\LiteNetLib\Utils\NtpRequest.cs" />
240272
<Compile Include="CP_SDK\Network\RateLimitInfo.cs" />
241273
<Compile Include="CP_SDK\Network\WebClient_Unity.cs" />
242274
<Compile Include="CP_SDK\Network\WebResponse.cs" />
-319 Bytes
Binary file not shown.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System.Collections.Generic;
2+
using System.Threading;
3+
4+
namespace CP_SDK_LiteNetLib
5+
{
6+
internal abstract class BaseChannel
7+
{
8+
protected readonly NetPeer Peer;
9+
protected readonly Queue<NetPacket> OutgoingQueue;
10+
private int _isAddedToPeerChannelSendQueue;
11+
12+
public int PacketsInQueue
13+
{
14+
get { return OutgoingQueue.Count; }
15+
}
16+
17+
protected BaseChannel(NetPeer peer)
18+
{
19+
Peer = peer;
20+
OutgoingQueue = new Queue<NetPacket>(64);
21+
}
22+
23+
public void AddToQueue(NetPacket packet)
24+
{
25+
lock (OutgoingQueue)
26+
{
27+
OutgoingQueue.Enqueue(packet);
28+
}
29+
AddToPeerChannelSendQueue();
30+
}
31+
32+
protected void AddToPeerChannelSendQueue()
33+
{
34+
if (Interlocked.CompareExchange(ref _isAddedToPeerChannelSendQueue, 1, 0) == 0)
35+
{
36+
Peer.AddToReliableChannelSendQueue(this);
37+
}
38+
}
39+
40+
public bool SendAndCheckQueue()
41+
{
42+
bool hasPacketsToSend = SendNextPackets();
43+
if (!hasPacketsToSend)
44+
Interlocked.Exchange(ref _isAddedToPeerChannelSendQueue, 0);
45+
46+
return hasPacketsToSend;
47+
}
48+
49+
protected abstract bool SendNextPackets();
50+
public abstract bool ProcessPacket(NetPacket packet);
51+
}
52+
}
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
using System.Net;
2+
using System.Threading;
3+
using CP_SDK_LiteNetLib.Utils;
4+
5+
namespace CP_SDK_LiteNetLib
6+
{
7+
internal enum ConnectionRequestResult
8+
{
9+
None,
10+
Accept,
11+
Reject,
12+
RejectForce
13+
}
14+
15+
public class ConnectionRequest
16+
{
17+
private readonly NetManager _listener;
18+
private int _used;
19+
20+
public readonly NetDataReader Data;
21+
22+
internal ConnectionRequestResult Result { get; private set; }
23+
internal long ConnectionTime;
24+
internal byte ConnectionNumber;
25+
public readonly IPEndPoint RemoteEndPoint;
26+
27+
private bool TryActivate()
28+
{
29+
return Interlocked.CompareExchange(ref _used, 1, 0) == 0;
30+
}
31+
32+
internal void UpdateRequest(NetConnectRequestPacket connRequest)
33+
{
34+
if (connRequest.ConnectionTime >= ConnectionTime)
35+
{
36+
ConnectionTime = connRequest.ConnectionTime;
37+
ConnectionNumber = connRequest.ConnectionNumber;
38+
}
39+
}
40+
41+
internal ConnectionRequest(
42+
long connectionId,
43+
byte connectionNumber,
44+
NetDataReader netDataReader,
45+
IPEndPoint endPoint,
46+
NetManager listener)
47+
{
48+
ConnectionTime = connectionId;
49+
ConnectionNumber = connectionNumber;
50+
RemoteEndPoint = endPoint;
51+
Data = netDataReader;
52+
_listener = listener;
53+
}
54+
55+
public NetPeer AcceptIfKey(string key)
56+
{
57+
if (!TryActivate())
58+
return null;
59+
try
60+
{
61+
if (Data.GetString() == key)
62+
Result = ConnectionRequestResult.Accept;
63+
}
64+
catch
65+
{
66+
//NetDebug.WriteError("[AC] Invalid incoming data");
67+
}
68+
if (Result == ConnectionRequestResult.Accept)
69+
return _listener.OnConnectionSolved(this, null, 0, 0);
70+
71+
Result = ConnectionRequestResult.Reject;
72+
_listener.OnConnectionSolved(this, null, 0, 0);
73+
return null;
74+
}
75+
76+
/// <summary>
77+
/// Accept connection and get new NetPeer as result
78+
/// </summary>
79+
/// <returns>Connected NetPeer</returns>
80+
public NetPeer Accept()
81+
{
82+
if (!TryActivate())
83+
return null;
84+
Result = ConnectionRequestResult.Accept;
85+
return _listener.OnConnectionSolved(this, null, 0, 0);
86+
}
87+
88+
public void Reject(byte[] rejectData, int start, int length, bool force)
89+
{
90+
if (!TryActivate())
91+
return;
92+
Result = force ? ConnectionRequestResult.RejectForce : ConnectionRequestResult.Reject;
93+
_listener.OnConnectionSolved(this, rejectData, start, length);
94+
}
95+
96+
public void Reject(byte[] rejectData, int start, int length)
97+
{
98+
Reject(rejectData, start, length, false);
99+
}
100+
101+
102+
public void RejectForce(byte[] rejectData, int start, int length)
103+
{
104+
Reject(rejectData, start, length, true);
105+
}
106+
107+
public void RejectForce()
108+
{
109+
Reject(null, 0, 0, true);
110+
}
111+
112+
public void RejectForce(byte[] rejectData)
113+
{
114+
Reject(rejectData, 0, rejectData.Length, true);
115+
}
116+
117+
public void RejectForce(NetDataWriter rejectData)
118+
{
119+
Reject(rejectData.Data, 0, rejectData.Length, true);
120+
}
121+
122+
public void Reject()
123+
{
124+
Reject(null, 0, 0, false);
125+
}
126+
127+
public void Reject(byte[] rejectData)
128+
{
129+
Reject(rejectData, 0, rejectData.Length, false);
130+
}
131+
132+
public void Reject(NetDataWriter rejectData)
133+
{
134+
Reject(rejectData.Data, 0, rejectData.Length, false);
135+
}
136+
}
137+
}

0 commit comments

Comments
 (0)