Compare commits

..

4 Commits

Author SHA1 Message Date
edmand46 f83d3ea0c7 chore: update version 2022-11-13 18:54:23 +04:00
edmand46 3564eb2adc feat: added except invoker target 2022-11-13 18:53:56 +04:00
edmand46 3531432758 fixed: crash on concurrent authorization 2022-11-13 00:20:41 +04:00
edmand46 6bda468607 v1.0.23-rc 2022-10-24 22:19:50 +04:00
7 changed files with 44 additions and 17 deletions
+1
View File
@@ -4,6 +4,7 @@ namespace Ragon.Common
{
Owner,
ExceptOwner,
ExceptInvoker,
All,
}
}
+1
View File
@@ -1,5 +1,6 @@
{
"key": "defaultkey",
"socket": "udp",
"protocol": "1.0.0",
"statisticsInterval": 5,
"sendRate": 50,
+12
View File
@@ -30,7 +30,19 @@ namespace Ragon.Core
var dispatcher = new Dispatcher();
_dispatcher = dispatcher;
if (configuration.Socket == "udp")
{
_socketServer = new ENetServer(this);
}
else if (configuration.Socket == "websocket")
{
_socketServer = new WebSocketServer(this);
}
else
{
_logger.Error($"Unknown socket type {configuration.Socket}");
}
_deltaTime = 1000.0f / configuration.SendRate;
_roomManager = new RoomManager(factory, this);
+6
View File
@@ -42,6 +42,12 @@ public class AuthorizationManager
public void Accepted(ushort peerId, string playerId, string playerName)
{
if (_playersByPeers.ContainsKey(peerId))
{
_logger.Warn($"Connection already authorized {peerId}");
return;
}
_serializer.Clear();
_serializer.WriteOperation(RagonOperation.AUTHORIZED_SUCCESS);
_serializer.WriteString(playerId);
+2 -1
View File
@@ -10,6 +10,7 @@ namespace Ragon.Core
{
public string Key;
public string Protocol;
public string Socket;
public int StatisticsInterval;
public ushort SendRate;
public ushort Port;
@@ -20,7 +21,7 @@ namespace Ragon.Core
public int MaxRooms;
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
private static readonly string _serverVersion = "1.0.22-rc";
private static readonly string _serverVersion = "1.0.25-rc";
private static void CopyrightInfo()
{
+9 -3
View File
@@ -81,7 +81,7 @@ public class Entity
serializer.WriteData(ref payload);
var sendData = serializer.ToArray();
Send(targetMode, sendData);
RouteEvent(peerId, targetMode, sendData);
}
public void ReadState(uint peerId, RagonSerializer serializer)
@@ -197,6 +197,7 @@ public class Entity
public void Destroy(ReadOnlySpan<byte> payload)
{
var serializer = _room.GetSharedSerializer();
serializer.Clear();
serializer.WriteOperation(RagonOperation.DESTROY_ENTITY);
serializer.WriteInt(EntityId);
@@ -207,7 +208,7 @@ public class Entity
_room.BroadcastToReady(sendData, DeliveryType.Reliable);
}
void Send(RagonTarget targetMode, byte[] sendData)
void RouteEvent(ushort peerId, RagonTarget targetMode, byte[] sendData)
{
switch (targetMode)
{
@@ -221,6 +222,11 @@ public class Entity
_room.BroadcastToReady(sendData, new [] { OwnerId }, DeliveryType.Reliable);
break;
}
case RagonTarget.ExceptInvoker:
{
_room.BroadcastToReady(sendData, new[] {peerId}, DeliveryType.Reliable);
break;
}
case RagonTarget.All:
{
_room.BroadcastToReady(sendData, DeliveryType.Reliable);
@@ -236,7 +242,7 @@ public class Entity
var targetMode = (RagonTarget) reader.ReadByte();
var payloadData = reader.ReadData(reader.Size);
Span<byte> payloadRaw = stackalloc byte[reader.Size];
Span<byte> payloadRaw = stackalloc byte[payloadData.Length];
ReadOnlySpan<byte> payload = payloadRaw;
payloadData.CopyTo(payloadRaw);