diff --git a/Ragon.Client/Sources/Handler/AuthorizeFailedHandler.cs b/Ragon.Client/Sources/Handler/AuthorizeFailedHandler.cs index d378aac..dd569d4 100644 --- a/Ragon.Client/Sources/Handler/AuthorizeFailedHandler.cs +++ b/Ragon.Client/Sources/Handler/AuthorizeFailedHandler.cs @@ -27,9 +27,9 @@ internal class AuthorizeFailedHandler: IHandler _listenerList = list; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var message = buffer.ReadString(); + var message = reader.ReadString(); _listenerList.OnAuthorizationFailed(message); } } \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/AuthorizeSuccessHandler.cs b/Ragon.Client/Sources/Handler/AuthorizeSuccessHandler.cs index e86fd07..32d3300 100644 --- a/Ragon.Client/Sources/Handler/AuthorizeSuccessHandler.cs +++ b/Ragon.Client/Sources/Handler/AuthorizeSuccessHandler.cs @@ -19,7 +19,7 @@ using Ragon.Protocol; namespace Ragon.Client; -internal class AuthorizeSuccessHandler: IHandler +internal class AuthorizeSuccessHandler: IHandler { private readonly RagonListenerList _listenerList; private readonly RagonClient _client; @@ -32,11 +32,11 @@ internal class AuthorizeSuccessHandler: IHandler _listenerList = listenerList; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var playerId = buffer.ReadString(); - var playerName = buffer.ReadString(); - var playerPayload = buffer.ReadString(); + var playerId = reader.ReadString(); + var playerName = reader.ReadString(); + var playerPayload = reader.ReadString(); _client.SetStatus(RagonStatus.LOBBY); _listenerList.OnAuthorizationSuccess(playerId, playerName, playerPayload); diff --git a/Ragon.Client/Sources/Handler/EntityCreateHandler.cs b/Ragon.Client/Sources/Handler/EntityCreateHandler.cs index c303dd6..eb4f300 100644 --- a/Ragon.Client/Sources/Handler/EntityCreateHandler.cs +++ b/Ragon.Client/Sources/Handler/EntityCreateHandler.cs @@ -18,7 +18,7 @@ using Ragon.Protocol; namespace Ragon.Client; -internal class EntityCreateHandler : IHandler +internal class EntityCreateHandler : IHandler { private readonly RagonClient _client; private readonly RagonPlayerCache _playerCache; @@ -37,15 +37,15 @@ internal class EntityCreateHandler : IHandler _entityListener = entityListener; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var attachId = buffer.ReadUShort(); - var entityType = buffer.ReadUShort(); - var entityId = buffer.ReadUShort(); - var ownerId = buffer.ReadUShort(); + var attachId = reader.ReadUShort(); + var entityType = reader.ReadUShort(); + var entityId = reader.ReadUShort(); + var ownerId = reader.ReadUShort(); var player = _playerCache.GetPlayerByPeer(ownerId); - var payload = new RagonPayload(buffer.Capacity); - payload.Read(buffer); + var payload = new RagonPayload(reader.Capacity); + payload.Read(reader); if (player == null) { diff --git a/Ragon.Client/Sources/Handler/EntityEventHandler.cs b/Ragon.Client/Sources/Handler/EntityEventHandler.cs index ecffa61..6c28d0c 100644 --- a/Ragon.Client/Sources/Handler/EntityEventHandler.cs +++ b/Ragon.Client/Sources/Handler/EntityEventHandler.cs @@ -31,13 +31,13 @@ internal class EntityEventHandler : IHandler _playerCache = playerCache; _entityCache = entityCache; } - - public void Handle(RagonBuffer buffer) + + public void Handle(RagonBuffer reader) { - var eventCode = buffer.ReadUShort(); - var peerId = buffer.ReadUShort(); - var executionMode = (RagonReplicationMode)buffer.ReadByte(); - var entityId = buffer.ReadUShort(); + var eventCode = reader.ReadUShort(); + var peerId = reader.ReadUShort(); + var executionMode = (RagonReplicationMode)reader.ReadByte(); + var entityId = reader.ReadUShort(); var player = _playerCache.GetPlayerByPeer(peerId); if (player == null) @@ -49,6 +49,6 @@ internal class EntityEventHandler : IHandler if (player.IsLocal && executionMode == RagonReplicationMode.LocalAndServer) return; - _entityCache.OnEvent(player, entityId, eventCode, buffer); + _entityCache.OnEvent(player, entityId, eventCode, reader); } } \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/EntityOwnershipHandler.cs b/Ragon.Client/Sources/Handler/EntityOwnershipHandler.cs index 91738a1..c640a4f 100644 --- a/Ragon.Client/Sources/Handler/EntityOwnershipHandler.cs +++ b/Ragon.Client/Sources/Handler/EntityOwnershipHandler.cs @@ -35,18 +35,18 @@ internal class EntityOwnershipHandler: IHandler _entityCache = entityCache; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var newOwnerId = buffer.ReadUShort(); - var entities = buffer.ReadUShort(); + var newOwnerId = reader.ReadUShort(); + var entities = reader.ReadUShort(); var player = _playerCache.GetPlayerByPeer(newOwnerId); for (var i = 0; i < entities; i++) { - var entityId = buffer.ReadUShort(); + var entityId = reader.ReadUShort(); _entityCache.OnOwnershipChanged(player, entityId); RagonLog.Trace("Entity changed owner: " + entityId); - } + } } } \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/EntityRemoveHandler.cs b/Ragon.Client/Sources/Handler/EntityRemoveHandler.cs index b19f4b0..f375dae 100644 --- a/Ragon.Client/Sources/Handler/EntityRemoveHandler.cs +++ b/Ragon.Client/Sources/Handler/EntityRemoveHandler.cs @@ -19,7 +19,7 @@ using Ragon.Protocol; namespace Ragon.Client; -internal class EntityRemoveHandler: IHandler +internal class EntityRemoveHandler: IHandler { private readonly RagonEntityCache _entityCache; @@ -28,11 +28,11 @@ internal class EntityRemoveHandler: IHandler _entityCache = entityCache; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var entityId = buffer.ReadUShort(); - var payload = new RagonPayload(buffer.Capacity); - payload.Read(buffer); + var entityId = reader.ReadUShort(); + var payload = new RagonPayload(reader.Capacity); + payload.Read(reader); _entityCache.OnDestroy(entityId, payload); } diff --git a/Ragon.Client/Sources/Handler/EntityStateHandler.cs b/Ragon.Client/Sources/Handler/EntityStateHandler.cs index c8db5a0..b3feb5d 100644 --- a/Ragon.Client/Sources/Handler/EntityStateHandler.cs +++ b/Ragon.Client/Sources/Handler/EntityStateHandler.cs @@ -27,13 +27,13 @@ internal class StateEntityHandler: IHandler _entityCache = entityCache; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var entitiesCount = buffer.ReadUShort(); + var entitiesCount = reader.ReadUShort(); for (var i = 0; i < entitiesCount; i++) { - var entityId = buffer.ReadUShort(); - _entityCache.OnState(entityId, buffer); + var entityId = reader.ReadUShort(); + _entityCache.OnState(entityId, reader); } } } \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/IHandler.cs b/Ragon.Client/Sources/Handler/IHandler.cs index 4385782..c265e18 100644 --- a/Ragon.Client/Sources/Handler/IHandler.cs +++ b/Ragon.Client/Sources/Handler/IHandler.cs @@ -21,5 +21,5 @@ namespace Ragon.Client; public interface IHandler { - public void Handle(RagonBuffer buffer); + public void Handle(RagonBuffer reader); } \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/JoinFailedHandler.cs b/Ragon.Client/Sources/Handler/JoinFailedHandler.cs index 023017f..0c6173a 100644 --- a/Ragon.Client/Sources/Handler/JoinFailedHandler.cs +++ b/Ragon.Client/Sources/Handler/JoinFailedHandler.cs @@ -28,9 +28,9 @@ internal class JoinFailedHandler: IHandler _listenerList = listenerList; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var message = buffer.ReadString(); + var message = reader.ReadString(); _listenerList.OnFailed(message); } } \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/JoinSuccessHandler.cs b/Ragon.Client/Sources/Handler/JoinSuccessHandler.cs index 191d022..2d68fc0 100644 --- a/Ragon.Client/Sources/Handler/JoinSuccessHandler.cs +++ b/Ragon.Client/Sources/Handler/JoinSuccessHandler.cs @@ -57,14 +57,14 @@ internal class JoinSuccessHandler : IHandler _playerCache = playerCache; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var roomId = buffer.ReadString(); - var localId = buffer.ReadString(); - var ownerId = buffer.ReadString(); - var min = buffer.ReadUShort(); - var max = buffer.ReadUShort(); - var sceneName = buffer.ReadString(); + var roomId = reader.ReadString(); + var localId = reader.ReadString(); + var ownerId = reader.ReadString(); + var min = reader.ReadUShort(); + var max = reader.ReadUShort(); + var sceneName = reader.ReadString(); var scene = new RagonScene(_client, _playerCache, _entityCache, sceneName); var roomInfo = new RagonRoomInformation(roomId, localId, ownerId, min, max); diff --git a/Ragon.Client/Sources/Handler/LeaveRoomHandler.cs b/Ragon.Client/Sources/Handler/LeaveRoomHandler.cs index 3c0722e..949fef8 100644 --- a/Ragon.Client/Sources/Handler/LeaveRoomHandler.cs +++ b/Ragon.Client/Sources/Handler/LeaveRoomHandler.cs @@ -19,7 +19,7 @@ using Ragon.Protocol; namespace Ragon.Client; -internal class LeaveRoomHandler : IHandler +internal class LeaveRoomHandler : IHandler { private readonly RagonClient _client; private readonly RagonListenerList _listenerList; @@ -35,7 +35,7 @@ internal class LeaveRoomHandler : IHandler _entityCache = entityCache; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { _listenerList.OnLeft(); _entityCache.Cleanup(); diff --git a/Ragon.Client/Sources/Handler/LoadSceneHandler.cs b/Ragon.Client/Sources/Handler/LoadSceneHandler.cs index f12959e..75aec82 100644 --- a/Ragon.Client/Sources/Handler/LoadSceneHandler.cs +++ b/Ragon.Client/Sources/Handler/LoadSceneHandler.cs @@ -32,9 +32,9 @@ internal class SceneLoadHandler: IHandler _listenerList = listenerList; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var sceneName = buffer.ReadString(); + var sceneName = reader.ReadString(); var room = _client.Room; room.Cleanup(); diff --git a/Ragon.Client/Sources/Handler/OwnershipRoomHandler.cs b/Ragon.Client/Sources/Handler/OwnershipRoomHandler.cs index 74d7348..a25ca9e 100644 --- a/Ragon.Client/Sources/Handler/OwnershipRoomHandler.cs +++ b/Ragon.Client/Sources/Handler/OwnershipRoomHandler.cs @@ -35,9 +35,9 @@ internal class OwnershipRoomHandler: IHandler _entityCache = entityCache; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var newOwnerId = buffer.ReadUShort(); + var newOwnerId = reader.ReadUShort(); var player = _playerCache.GetPlayerByPeer(newOwnerId); _playerCache.OnOwnershipChanged(newOwnerId); diff --git a/Ragon.Client/Sources/Handler/PlayerJoinHandler.cs b/Ragon.Client/Sources/Handler/PlayerJoinHandler.cs index e0a5aad..e270281 100644 --- a/Ragon.Client/Sources/Handler/PlayerJoinHandler.cs +++ b/Ragon.Client/Sources/Handler/PlayerJoinHandler.cs @@ -33,11 +33,11 @@ internal class PlayerJoinHandler : IHandler _listenerList = listenerList; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var playerPeerId = buffer.ReadUShort(); - var playerId = buffer.ReadString(); - var playerName = buffer.ReadString(); + var playerPeerId = reader.ReadUShort(); + var playerId = reader.ReadString(); + var playerName = reader.ReadString(); _playerCache.AddPlayer(playerPeerId, playerId, playerName); diff --git a/Ragon.Client/Sources/Handler/PlayerLeftHandler.cs b/Ragon.Client/Sources/Handler/PlayerLeftHandler.cs index f0fc04e..4d1988f 100644 --- a/Ragon.Client/Sources/Handler/PlayerLeftHandler.cs +++ b/Ragon.Client/Sources/Handler/PlayerLeftHandler.cs @@ -36,20 +36,20 @@ internal class PlayerLeftHandler : IHandler _listenerList = listenerList; } - public void Handle(RagonBuffer buffer) + public void Handle(RagonBuffer reader) { - var playerId = buffer.ReadString(); + var playerId = reader.ReadString(); var player = _playerCache.GetPlayerById(playerId); if (player != null) { _playerCache.RemovePlayer(playerId); _listenerList.OnPlayerLeft(player); - var entities = buffer.ReadUShort(); + var entities = reader.ReadUShort(); var toDeleteIds = new ushort[entities]; for (var i = 0; i < entities; i++) { - var entityId = buffer.ReadUShort(); + var entityId = reader.ReadUShort(); toDeleteIds[i] = entityId; } diff --git a/Ragon.Client/Sources/Handler/RoomDataHandler.cs b/Ragon.Client/Sources/Handler/RoomDataHandler.cs new file mode 100644 index 0000000..e2c1389 --- /dev/null +++ b/Ragon.Client/Sources/Handler/RoomDataHandler.cs @@ -0,0 +1,11 @@ +using Ragon.Protocol; + +namespace Ragon.Client; + +public class RoomDataHandler: IHandler +{ + public void Handle(RagonBuffer reader) + { + var rawData = reader.RawData; + } +} \ No newline at end of file diff --git a/Ragon.Client/Sources/Handler/EventRoomHandler.cs b/Ragon.Client/Sources/Handler/RoomEventHandler.cs similarity index 95% rename from Ragon.Client/Sources/Handler/EventRoomHandler.cs rename to Ragon.Client/Sources/Handler/RoomEventHandler.cs index 346de17..e1528ed 100644 --- a/Ragon.Client/Sources/Handler/EventRoomHandler.cs +++ b/Ragon.Client/Sources/Handler/RoomEventHandler.cs @@ -18,12 +18,12 @@ using Ragon.Protocol; namespace Ragon.Client; -public class EventRoomHandler: IHandler +public class RoomEventHandler: IHandler { private readonly RagonClient _client; private readonly RagonPlayerCache _playerCache; - public EventRoomHandler( + public RoomEventHandler( RagonClient client, RagonPlayerCache playerCache ) diff --git a/Ragon.Client/Sources/RagonClient.cs b/Ragon.Client/Sources/RagonClient.cs index cc407b1..1c0ee95 100644 --- a/Ragon.Client/Sources/RagonClient.cs +++ b/Ragon.Client/Sources/RagonClient.cs @@ -120,7 +120,7 @@ namespace Ragon.Client _handlers[(byte)RagonOperation.REPLICATE_ENTITY_STATE] = new StateEntityHandler(_entityCache); _handlers[(byte)RagonOperation.REPLICATE_ENTITY_EVENT] = new EntityEventHandler(_playerCache, _entityCache); _handlers[(byte)RagonOperation.SNAPSHOT] = new SnapshotHandler(this, listeners, _entityCache, _playerCache, _entityListener); - _handlers[(byte)RagonOperation.REPLICATE_RAW_DATA] = new EventRoomHandler(this, _playerCache); + _handlers[(byte)RagonOperation.REPLICATE_RAW_DATA] = new RoomEventHandler(this, _playerCache); _handlers[(byte)RagonOperation.TIMESTAMP_SYNCHRONIZATION] = new TimestampHandler(this); var protocolRaw = RagonVersion.Parse(protocol); diff --git a/Ragon.Protocol/Sources/RagonBuffer.cs b/Ragon.Protocol/Sources/RagonBuffer.cs index 3630255..44a1452 100644 --- a/Ragon.Protocol/Sources/RagonBuffer.cs +++ b/Ragon.Protocol/Sources/RagonBuffer.cs @@ -68,8 +68,10 @@ namespace Ragon.Protocol private int _read; private int _write; private uint[] _buckets; + private byte[] _rawData; private readonly UTF8Encoding _utf8Encoding = new UTF8Encoding(false, true); + public byte[] RawData => _rawData; public int ReadOffset => _read; public int WriteOffset => _write; public int Length => ((_write - 1) >> 3) + 1; @@ -78,6 +80,7 @@ namespace Ragon.Protocol public RagonBuffer(int capacity = 128) { _buckets = new uint[capacity]; + _rawData = Array.Empty(); _read = 0; _write = 0; } @@ -397,6 +400,7 @@ namespace Ragon.Protocol _write = ((length - 1) * 8) + positionInByte; _read = 0; + _rawData = data; } public byte[] ToArray() diff --git a/Ragon.Relay/Ragon.Relay.csproj b/Ragon.Relay/Ragon.Relay.csproj index cf8f643..d03597f 100644 --- a/Ragon.Relay/Ragon.Relay.csproj +++ b/Ragon.Relay/Ragon.Relay.csproj @@ -23,7 +23,7 @@ - + diff --git a/Ragon.Relay/Sources/Relay.cs b/Ragon.Relay/Sources/Relay.cs index 98edb98..dad3948 100644 --- a/Ragon.Relay/Sources/Relay.cs +++ b/Ragon.Relay/Sources/Relay.cs @@ -16,7 +16,7 @@ using NLog; using Ragon.Server; -using Ragon.Server.ENet; +using Ragon.Server.ENetServer; using Ragon.Server.WebSocketServer; using Ragon.Server.IO; using Ragon.Server.Plugin; diff --git a/Ragon.Server.ENet/Ragon.Server.ENet.csproj b/Ragon.Server.ENetServer/Ragon.Server.ENetServer.csproj similarity index 100% rename from Ragon.Server.ENet/Ragon.Server.ENet.csproj rename to Ragon.Server.ENetServer/Ragon.Server.ENetServer.csproj diff --git a/Ragon.Server.ENet/Sources/ENetConnection.cs b/Ragon.Server.ENetServer/Sources/ENetConnection.cs similarity index 97% rename from Ragon.Server.ENet/Sources/ENetConnection.cs rename to Ragon.Server.ENetServer/Sources/ENetConnection.cs index 5169d9a..37b8604 100644 --- a/Ragon.Server.ENet/Sources/ENetConnection.cs +++ b/Ragon.Server.ENetServer/Sources/ENetConnection.cs @@ -17,7 +17,7 @@ using ENet; using Ragon.Server.IO; -namespace Ragon.Server.ENet; +namespace Ragon.Server.ENetServer; public sealed class ENetConnection: INetworkConnection { diff --git a/Ragon.Server.ENet/Sources/ENetReliableChannel.cs b/Ragon.Server.ENetServer/Sources/ENetReliableChannel.cs similarity index 97% rename from Ragon.Server.ENet/Sources/ENetReliableChannel.cs rename to Ragon.Server.ENetServer/Sources/ENetReliableChannel.cs index 9828edd..8fc9c98 100644 --- a/Ragon.Server.ENet/Sources/ENetReliableChannel.cs +++ b/Ragon.Server.ENetServer/Sources/ENetReliableChannel.cs @@ -19,7 +19,7 @@ using ENet; using Ragon.Protocol; using Ragon.Server.IO; -namespace Ragon.Server.ENet; +namespace Ragon.Server.ENetServer; public sealed class ENetReliableChannel: INetworkChannel { diff --git a/Ragon.Server.ENet/Sources/ENetServer.cs b/Ragon.Server.ENetServer/Sources/ENetServer.cs similarity index 88% rename from Ragon.Server.ENet/Sources/ENetServer.cs rename to Ragon.Server.ENetServer/Sources/ENetServer.cs index 6bb1e01..c577913 100644 --- a/Ragon.Server.ENet/Sources/ENetServer.cs +++ b/Ragon.Server.ENetServer/Sources/ENetServer.cs @@ -19,27 +19,20 @@ using NLog; using Ragon.Protocol; using Ragon.Server.IO; -namespace Ragon.Server.ENet +namespace Ragon.Server.ENetServer { public sealed class ENetServer : INetworkServer { public Executor Executor => _executor; - private readonly Host _host; + private readonly Host _host = new(); private readonly ILogger _logger = LogManager.GetCurrentClassLogger(); - private ENetConnection[] _connections; + private ENetConnection[] _connections = Array.Empty(); private INetworkListener _listener; private uint _protocol; - private global::ENet.Event _event; - private Executor _executor; - - public ENetServer() - { - _host = new Host(); - _executor = new Executor(); - _connections = Array.Empty(); - } + private ENet.Event _event; + private Executor _executor = new(); public void Start(INetworkListener listener, NetworkConfiguration configuration) { @@ -118,7 +111,7 @@ namespace Ragon.Server.ENet _event.Packet.CopyTo(dataRaw); _event.Packet.Dispose(); - _listener.OnData(connection, (NetworkChannel) _event.ChannelID, dataRaw); + _listener.OnData(connection, (NetworkChannel)_event.ChannelID, dataRaw); break; } } @@ -129,16 +122,16 @@ namespace Ragon.Server.ENet { var packet = new Packet(); packet.Create(data, PacketFlags.Reliable); - - _host.Broadcast(0, ref packet); + + _host.Broadcast((byte)NetworkChannel.RELIABLE, ref packet); } public void BroadcastUnreliable(byte[] data) { var packet = new Packet(); packet.Create(data, PacketFlags.None); - - _host.Broadcast(1, ref packet); + + _host.Broadcast((byte)NetworkChannel.UNRELIABLE, ref packet); } public void Stop() diff --git a/Ragon.Server.ENet/Sources/ENetUnreliableChannel.cs b/Ragon.Server.ENetServer/Sources/ENetUnreliableChannel.cs similarity index 97% rename from Ragon.Server.ENet/Sources/ENetUnreliableChannel.cs rename to Ragon.Server.ENetServer/Sources/ENetUnreliableChannel.cs index 9d3a50b..3efe2e8 100644 --- a/Ragon.Server.ENet/Sources/ENetUnreliableChannel.cs +++ b/Ragon.Server.ENetServer/Sources/ENetUnreliableChannel.cs @@ -18,7 +18,7 @@ using ENet; using Ragon.Protocol; using Ragon.Server.IO; -namespace Ragon.Server.ENet; +namespace Ragon.Server.ENetServer; public sealed class ENetUnreliableChannel: INetworkChannel { diff --git a/Ragon.Server/Sources/Handler/AuthorizationOperation.cs b/Ragon.Server/Sources/Handler/AuthorizationOperation.cs index 5e50626..3eb7561 100644 --- a/Ragon.Server/Sources/Handler/AuthorizationOperation.cs +++ b/Ragon.Server/Sources/Handler/AuthorizationOperation.cs @@ -40,7 +40,7 @@ public sealed class AuthorizationOperation: BaseOperation _writer = writer; } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { if (context.ConnectionStatus == ConnectionStatus.Authorized) { diff --git a/Ragon.Server/Sources/Handler/BaseOperation.cs b/Ragon.Server/Sources/Handler/BaseOperation.cs index de50cc6..df284b7 100644 --- a/Ragon.Server/Sources/Handler/BaseOperation.cs +++ b/Ragon.Server/Sources/Handler/BaseOperation.cs @@ -29,5 +29,5 @@ public abstract class BaseOperation Writer = writer; } - public abstract void Handle(RagonContext context, byte[] data); + public abstract void Handle(RagonContext context); } \ No newline at end of file diff --git a/Ragon.Server/Sources/Handler/EntityCreateOperation.cs b/Ragon.Server/Sources/Handler/EntityCreateOperation.cs index b0b9a97..0c48906 100644 --- a/Ragon.Server/Sources/Handler/EntityCreateOperation.cs +++ b/Ragon.Server/Sources/Handler/EntityCreateOperation.cs @@ -28,7 +28,7 @@ public sealed class EntityCreateOperation : BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var player = context.RoomPlayer; var room = context.Room; diff --git a/Ragon.Server/Sources/Handler/EntityEventOperation.cs b/Ragon.Server/Sources/Handler/EntityEventOperation.cs index c73f662..bf22e6a 100644 --- a/Ragon.Server/Sources/Handler/EntityEventOperation.cs +++ b/Ragon.Server/Sources/Handler/EntityEventOperation.cs @@ -28,7 +28,7 @@ public sealed class EntityEventOperation : BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var player = context.RoomPlayer; var room = context.Room; diff --git a/Ragon.Server/Sources/Handler/EntityOwnershipOperation.cs b/Ragon.Server/Sources/Handler/EntityOwnershipOperation.cs index 4b20eb0..cecba20 100644 --- a/Ragon.Server/Sources/Handler/EntityOwnershipOperation.cs +++ b/Ragon.Server/Sources/Handler/EntityOwnershipOperation.cs @@ -11,7 +11,7 @@ public sealed class EntityOwnershipOperation : BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var currentOwner = context.RoomPlayer; var room = context.Room; diff --git a/Ragon.Server/Sources/Handler/EntityRemoveOperation.cs b/Ragon.Server/Sources/Handler/EntityRemoveOperation.cs index d799ff6..ef7fd37 100644 --- a/Ragon.Server/Sources/Handler/EntityRemoveOperation.cs +++ b/Ragon.Server/Sources/Handler/EntityRemoveOperation.cs @@ -28,7 +28,7 @@ public sealed class EntityDestroyOperation: BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var player = context.RoomPlayer; var room = context.Room; diff --git a/Ragon.Server/Sources/Handler/EntityStateOperation.cs b/Ragon.Server/Sources/Handler/EntityStateOperation.cs index 47776ef..876fb8d 100644 --- a/Ragon.Server/Sources/Handler/EntityStateOperation.cs +++ b/Ragon.Server/Sources/Handler/EntityStateOperation.cs @@ -27,7 +27,7 @@ public sealed class EntityStateOperation: BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var room = context.Room; var player = context.RoomPlayer; diff --git a/Ragon.Server/Sources/Handler/RoomCreateOperation.cs b/Ragon.Server/Sources/Handler/RoomCreateOperation.cs index 6c028e1..9858cbe 100644 --- a/Ragon.Server/Sources/Handler/RoomCreateOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomCreateOperation.cs @@ -36,7 +36,7 @@ public sealed class RoomCreateOperation : BaseOperation _ragonWebHookPlugin = ragonWebHook; } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { if (context.ConnectionStatus == ConnectionStatus.Unauthorized) { diff --git a/Ragon.Server/Sources/Handler/RoomDataOperation.cs b/Ragon.Server/Sources/Handler/RoomDataOperation.cs index 395b294..71905d7 100644 --- a/Ragon.Server/Sources/Handler/RoomDataOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomDataOperation.cs @@ -25,15 +25,17 @@ public sealed class RoomDataOperation : BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var player = context.RoomPlayer; var room = context.Room; - + + var data = Reader.RawData; + Writer.Clear(); Writer.WriteOperation(RagonOperation.REPLICATE_RAW_DATA); Writer.WriteUShort(player.Connection.Id); - + var playerData = Writer.ToArray(); var payloadData = data; var size = playerData.Length + payloadData.Length; diff --git a/Ragon.Server/Sources/Handler/RoomEventOperation.cs b/Ragon.Server/Sources/Handler/RoomEventOperation.cs index df7c7d6..b314806 100644 --- a/Ragon.Server/Sources/Handler/RoomEventOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomEventOperation.cs @@ -9,7 +9,7 @@ public class RoomEventOperation : BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var room = context.Room; var player = context.RoomPlayer; diff --git a/Ragon.Server/Sources/Handler/RoomJoinOperation.cs b/Ragon.Server/Sources/Handler/RoomJoinOperation.cs index 6e47f79..bf5eab5 100644 --- a/Ragon.Server/Sources/Handler/RoomJoinOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomJoinOperation.cs @@ -33,7 +33,7 @@ public sealed class RoomJoinOperation : BaseOperation } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var roomId = Reader.ReadString(); var lobbyPlayer = context.LobbyPlayer; diff --git a/Ragon.Server/Sources/Handler/RoomJoinOrCreateOperation.cs b/Ragon.Server/Sources/Handler/RoomJoinOrCreateOperation.cs index 3670e86..cf936e3 100644 --- a/Ragon.Server/Sources/Handler/RoomJoinOrCreateOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomJoinOrCreateOperation.cs @@ -36,7 +36,7 @@ public sealed class RoomJoinOrCreateOperation : BaseOperation _ragonWebHookPlugin = plugin; } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { if (context.ConnectionStatus == ConnectionStatus.Unauthorized) { diff --git a/Ragon.Server/Sources/Handler/RoomLeaveOperation.cs b/Ragon.Server/Sources/Handler/RoomLeaveOperation.cs index bda8b5d..ab740db 100644 --- a/Ragon.Server/Sources/Handler/RoomLeaveOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomLeaveOperation.cs @@ -31,7 +31,7 @@ public sealed class RoomLeaveOperation: BaseOperation _webHook = plugin; } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var room = context.Room; var roomPlayer = context.RoomPlayer; diff --git a/Ragon.Server/Sources/Handler/RoomOwnershipOperation.cs b/Ragon.Server/Sources/Handler/RoomOwnershipOperation.cs index 859a4ef..db93166 100644 --- a/Ragon.Server/Sources/Handler/RoomOwnershipOperation.cs +++ b/Ragon.Server/Sources/Handler/RoomOwnershipOperation.cs @@ -12,7 +12,7 @@ public sealed class RoomOwnershipOperation : BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { } diff --git a/Ragon.Server/Sources/Handler/SceneLoadOperation.cs b/Ragon.Server/Sources/Handler/SceneLoadOperation.cs index 4d74a77..9f8378c 100644 --- a/Ragon.Server/Sources/Handler/SceneLoadOperation.cs +++ b/Ragon.Server/Sources/Handler/SceneLoadOperation.cs @@ -26,7 +26,7 @@ public class SceneLoadOperation: BaseOperation public SceneLoadOperation(RagonBuffer reader, RagonBuffer writer) : base(reader, writer) {} - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var roomOwner = context.Room.Owner; var currentPlayer = context.RoomPlayer; diff --git a/Ragon.Server/Sources/Handler/SceneLoadedOperation.cs b/Ragon.Server/Sources/Handler/SceneLoadedOperation.cs index 377d192..5c7c662 100644 --- a/Ragon.Server/Sources/Handler/SceneLoadedOperation.cs +++ b/Ragon.Server/Sources/Handler/SceneLoadedOperation.cs @@ -31,7 +31,7 @@ public sealed class SceneLoadedOperation : BaseOperation } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { if (context.ConnectionStatus == ConnectionStatus.Unauthorized) return; diff --git a/Ragon.Server/Sources/Handler/TimestampSyncOperation.cs b/Ragon.Server/Sources/Handler/TimestampSyncOperation.cs index 5ca9ba7..7840e03 100644 --- a/Ragon.Server/Sources/Handler/TimestampSyncOperation.cs +++ b/Ragon.Server/Sources/Handler/TimestampSyncOperation.cs @@ -8,7 +8,7 @@ public class TimestampSyncOperation: BaseOperation { } - public override void Handle(RagonContext context, byte[] data) + public override void Handle(RagonContext context) { var timestamp0 = Reader.Read(32); var timestamp1 = Reader.Read(32); diff --git a/Ragon.Server/Sources/RagonServer.cs b/Ragon.Server/Sources/RagonServer.cs index a6198bc..62dd4d2 100644 --- a/Ragon.Server/Sources/RagonServer.cs +++ b/Ragon.Server/Sources/RagonServer.cs @@ -194,17 +194,10 @@ public class RagonServer : IRagonServer, INetworkListener { _writer.Clear(); _reader.Clear(); - - if (channel == NetworkChannel.RAW) - { - _handlers[(byte)RagonOperation.REPLICATE_RAW_DATA].Handle(context, data); - return; - } - _reader.FromArray(data); var operation = _reader.ReadByte(); - _handlers[operation].Handle(context, data); + _handlers[operation].Handle(context); } } catch (Exception ex) diff --git a/Ragon.sln b/Ragon.sln index 56958b6..667a51d 100644 --- a/Ragon.sln +++ b/Ragon.sln @@ -8,7 +8,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ragon.Server", "Ragon.Serve EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ragon.Server.WebSocketServer", "Ragon.Server.WebSocketServer\Ragon.Server.WebSocketServer.csproj", "{81050343-A9B8-487B-86C8-7A5B7DD9C39B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ragon.Server.ENet", "Ragon.Server.ENet\Ragon.Server.ENet.csproj", "{DD79AC4F-9E5C-4938-850E-805D537E68D0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ragon.Server.ENetServer", "Ragon.Server.ENetServer\Ragon.Server.ENetServer.csproj", "{DD79AC4F-9E5C-4938-850E-805D537E68D0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ragon.Client", "Ragon.Client\Ragon.Client.csproj", "{C82D65BF-6D80-4263-ADFE-CB9ED990B6C3}" EndProject