void WorldEntityPacketReceived(WorldEntityPacket packet) { //todo: verify movement Position = packet.position.Get(); Rotation = packet.rotation.Get(); IsDirty = true; }
private void OnWorldEntityPacket(WorldEntityPacket packet) { moves.Enqueue( new MovementUpdate( packet.position.Get(), Quaternion.Euler(packet.rotation.Get()), DateTime.UtcNow.ToUnixMilliseconds())); }
public void SendPositionInfo() { WorldEntityPacket wep = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); wep.rotation.Set(rotation); wep.position.Set(position); wep.entityId = entityId; testClient.Send(wep); }
public virtual void SendPositionAndRotationData(ServerPlayer destPlayer) { WorldEntityPacket packet = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); packet.entityId = EntityId; packet.position.Set(Position); packet.rotation.Set(Rotation); Server.Send(packet, destPlayer.EntityId.SingleItemAsEnumerable()); }
public override void SendPositionAndRotationData(ServerPlayer destPlayer) { WorldEntityPacket liveEntityPosition = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); liveEntityPosition.entityId = EntityId; liveEntityPosition.position.Set(Position); liveEntityPosition.rotation.Set(Rotation); Server.Send(liveEntityPosition, destPlayer.EntityId.SingleItemAsEnumerable()); }
private static void Main(string[] args) { CommonLibrary.Parser.ParseCommandLine(args); long applicationId = CommonLibrary.Parser.ApplicationId; if (applicationId == 0) { applicationId = Network.Utils.GetIPBasedApplicationId(); } float sleepTime = 1000.0f / (float)CommonLibrary.Parser.FPS; string ipAddr = CommonLibrary.Parser.ipAddr; Console.WriteLine("Game server talking to Gateway."); //Console.WriteLine(" Press L to login (auto login is set)."); Console.WriteLine(" Press P to update player position."); Console.WriteLine(" ** application id = {0} **", applicationId); Console.WriteLine(" Press esc to update player position.\n\n"); ushort port = 11004; TestGameServerController testServer = new TestGameServerController(ipAddr, port, applicationId); //testServer.Star //testServer. // open socket to connect to the gateway // upon connect, send ServerIdPacket:Game to connected // receive ServerIdPacket:Gateway // upon disconnect, reconnect ConsoleKey key; do { while (!Console.KeyAvailable) { Thread.Sleep(20); } key = Console.ReadKey(true).Key; if (key == ConsoleKey.P) { WorldEntityPacket we = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); we.entityId = 1024; we.position.Set(new Vector3(10, 20, 30)); we.rotation.Set(new Vector3(10, 20, 30)); testServer.Send(we); Console.WriteLine("position sent."); } } while (key != ConsoleKey.Escape); testServer.Close(); }
void OnTick() { if (positionalTracker.Passes(transform.position, transform.rotation) == true) { WorldEntityPacket packet = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); packet.entityId = EntityId; packet.position.Set(transform.position); packet.rotation.Set(transform.rotation.eulerAngles); Client.Send(packet); positionalTracker.Set(transform.position, transform.rotation); } }
void HandlePlayerPackets(BasePacket packet) { if (packet.PacketType == PacketType.ServerConnectionHeader) { ServerConnectionHeader sch = packet as ServerConnectionHeader; if (sch != null) { nextConnectionId = sch.connectionId; return; } } if (packet.PacketType == PacketType.PlayerSaveState) { HandlePlayerSaveState(packet as PlayerSaveStatePacket); return; } if (packet.PacketType == PacketType.WorldEntity) { WorldEntityPacket wep = packet as WorldEntityPacket; if (wep != null) { foreach (var playerId in playerIds) { if (playerId.entityId == wep.entityId) { playerId.Set(wep.position.Get(), wep.rotation.Get()); //SendAllEntityPositions(); } } return; } } if (packet.PacketType == PacketType.RenderSettings) { RenderSettings rs = packet as RenderSettings; if (rs != null) { foreach (var playerId in playerIds) { if (playerId.entityId == nextConnectionId) { playerId.settings = rs; } } return; } } }
void SendAllEntityPositions() { foreach (var playerId in playerIds) { if (playerId.connectionId != 0) { foreach (var destPlayerId in playerIds) // n^2 { //if (playerId.connectionId != destPlayerId.connectionId) { ServerConnectionHeader gatewayHeader = (ServerConnectionHeader)IntrepidSerialize.TakeFromPool(PacketType.ServerConnectionHeader); gatewayHeader.connectionId = destPlayerId.connectionId; WorldEntityPacket entityNotification = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); entityNotification.entityId = playerId.entityId; entityNotification.position.Set(playerId.position); entityNotification.rotation.Set(playerId.rotation); socket.Send(gatewayHeader); socket.Send(entityNotification); } } } } }
public MovementUpdate(WorldEntityPacket packet, DateTime timestamp) { Position = packet.position.Get(); Rotation = Quaternion.Euler(packet.rotation.Get()); Timestamp = timestamp.ToUnixMilliseconds(); }
private static void Main(string[] args) { CommonLibrary.Parser.ParseCommandLine(args); Int64 applicationId = 1234;/*CommonLibrary.Parser.ApplicationId; * if (applicationId == 0) * { * applicationId = Network.Utils.GetIPBasedApplicationId(); * }*/ float sleepTime = 1000.0f / (float)CommonLibrary.Parser.FPS; string ipAddr = CommonLibrary.Parser.ipAddr; //ipAddr = "192.168.30.214"; ipAddr = "192.168.0.28"; Console.WriteLine("Client talking to Server."); Console.WriteLine(" Press L to login (auto login is set)."); Console.WriteLine(" Press P to update player position."); Console.WriteLine(" Press K to change to main player position."); Console.WriteLine(" ** application id = {0} **", applicationId); Console.WriteLine(" Press esc to update player position.\n\n"); ushort port = 11000; Testing.ClientController testClient = new Testing.ClientController(ipAddr, port, applicationId); testClient.OnImageReceived += ImageReceived; ConsoleKey key; do { while (!Console.KeyAvailable) { Thread.Sleep(20); testClient.Update(); } key = Console.ReadKey(true).Key; if (key == ConsoleKey.L) { LoginCredentials cred = (LoginCredentials)IntrepidSerialize.TakeFromPool(PacketType.LoginCredentials); cred.password.Copy("password"); cred.playerName.Copy("mickey"); testClient.Send(cred); Console.WriteLine("login sent."); } if (key == ConsoleKey.D4) { RenderSettings settings = (RenderSettings)IntrepidSerialize.TakeFromPool(PacketType.RenderSettings); settings.screenWidth = 1280; settings.screenHeight = 720; settings.screenFormat = RenderSettings.RenderFormat.RGBA; settings.maxFPS = 20; testClient.Send(settings); Console.WriteLine("settings sent."); } if (key == ConsoleKey.D5) { RenderSettings settings = (RenderSettings)IntrepidSerialize.TakeFromPool(PacketType.RenderSettings); settings.screenWidth = 1280; settings.screenHeight = 720; settings.screenFormat = RenderSettings.RenderFormat.RGBA; settings.maxFPS = 4; testClient.Send(settings); Console.WriteLine("settings sent."); } if (key == ConsoleKey.D6) { RenderSettings settings = (RenderSettings)IntrepidSerialize.TakeFromPool(PacketType.RenderSettings); settings.screenWidth = 1280; settings.screenHeight = 720; settings.screenFormat = RenderSettings.RenderFormat.RGBA; settings.maxFPS = -1; testClient.Send(settings); Console.WriteLine("settings sent."); } if (key == ConsoleKey.P) { WorldEntityPacket we = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); we.entityId = 1024; we.position.Set(new Vector3(10, 20, 30)); we.rotation.Set(new Vector3(10, 20, 30)); testClient.Send(we); Console.WriteLine("position sent."); } if (key == ConsoleKey.K) { WorldEntityPacket we = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); we.entityId = 1024; we.position.Set(new Vector3(44, 0.20f, 21)); we.rotation.Set(new Vector3(5, 25, 30)); testClient.Send(we); Console.WriteLine("position sent."); } if (key == ConsoleKey.M) { Console.WriteLine("Major list of crap to send"); var test = new Packets.TestPacket(); Packets.TestDataBlob blob1 = new Packets.TestDataBlob(1, 2); Packets.TestDataBlob blob2 = new Packets.TestDataBlob(3, 4); Packets.TestDataBlob blob3 = new Packets.TestDataBlob(5, 6); test.listOfBlobs.listOfSerializableItems.Add(blob1); test.listOfBlobs.listOfSerializableItems.Add(blob2); test.listOfBlobs.listOfSerializableItems.Add(blob3); testClient.Send(test); } if (key == ConsoleKey.T) { Console.WriteLine("Setting up the hopper"); ServerPingHopperPacket hopper = (ServerPingHopperPacket)IntrepidSerialize.TakeFromPool(PacketType.ServerPingHopper); hopper.Stamp("client start"); testClient.Send(hopper); } if (key == ConsoleKey.B) { Console.WriteLine("Sending blob"); //DataBlob blob = new DataBlob(); DataBlob blob = (DataBlob)IntrepidSerialize.TakeFromPool(PacketType.DataBlob); int size = 800; byte[] data = new byte[size]; for (int i = 0; i < size; i++) { data[i] = (byte)i; } blob.Prep(data, size); testClient.Send(blob); } if (key == ConsoleKey.A) { int size = 8000; byte[] data = new byte[size]; for (int i = 0; i < size; i++) { data[i] = (byte)i; } Utils.DatablobAccumulator acc = new Utils.DatablobAccumulator(); List <DataBlob> blobs = acc.PrepToSendRawData(data, size); foreach (var blob in blobs) { testClient.Send(blob); } } if (key == ConsoleKey.S) { int size = 2000000; byte[] data = new byte[size]; for (int i = 0; i < size; i++) { data[i] = (byte)i; } Utils.DatablobAccumulator acc = new Utils.DatablobAccumulator(); List <DataBlob> blobs = acc.PrepToSendRawData(data, size); var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); Console.WriteLine(Timestamp); foreach (var blob in blobs) { testClient.Send(blob); } } if (key == ConsoleKey.R) { RequestPacket request = (RequestPacket)IntrepidSerialize.TakeFromPool(PacketType.RequestPacket); request.type = RequestPacket.RequestType.RequestRenderFrame; var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); //Console.WriteLine("request start {0} ms", Timestamp); testClient.startTimeMilliseconds = Timestamp; testClient.Send(request); } } while (key != ConsoleKey.Escape); testClient.Close(); }
static void Main(string[] args) { CommonLibrary.Parser.ParseCommandLine(args); Int64 applicationId = CommonLibrary.Parser.ApplicationId; if (applicationId == 0) { applicationId = Network.Utils.GetIPBasedApplicationId(); } float sleepTime = 1000.0f / (float)CommonLibrary.Parser.FPS; string ipAddr = CommonLibrary.Parser.ipAddr; Console.WriteLine("Client talking to Gateway."); Console.WriteLine(" Press L to login (auto login is set)."); Console.WriteLine(" Press P to update player position."); Console.WriteLine(" Press K to change to main player position."); Console.WriteLine(" ** application id = {0} **", applicationId); Console.WriteLine(" Press esc to update player position.\n\n"); ushort port = 11000; TestClientToGatewayController testClient = new TestClientToGatewayController(ipAddr, port, applicationId); ConsoleKey key; do { while (!Console.KeyAvailable) { } key = Console.ReadKey(true).Key; if (key == ConsoleKey.L) { LoginCredentials cred = (LoginCredentials)IntrepidSerialize.TakeFromPool(PacketType.LoginCredentials); cred.password.Copy("password"); cred.playerName.Copy("mickey"); testClient.Send(cred); Console.WriteLine("login sent."); } if (key == ConsoleKey.P) { WorldEntityPacket we = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); we.entityId = 1024; we.position.Set(new Vector3(10, 20, 30)); we.rotation.Set(new Vector3(10, 20, 30)); testClient.Send(we); Console.WriteLine("position sent."); } if (key == ConsoleKey.K) { WorldEntityPacket we = (WorldEntityPacket)IntrepidSerialize.TakeFromPool(PacketType.WorldEntity); we.entityId = 1024; we.position.Set(new Vector3(44, 0.20f, 21)); we.rotation.Set(new Vector3(5, 25, 30)); testClient.Send(we); Console.WriteLine("position sent."); } if (key == ConsoleKey.M) { Console.WriteLine("Major list of crap to send"); var test = new Packets.TestPacket(); Packets.TestDataBlob blob1 = new Packets.TestDataBlob(1, 2); Packets.TestDataBlob blob2 = new Packets.TestDataBlob(3, 4); Packets.TestDataBlob blob3 = new Packets.TestDataBlob(5, 6); test.listOfBlobs.listOfSerializableItems.Add(blob1); test.listOfBlobs.listOfSerializableItems.Add(blob2); test.listOfBlobs.listOfSerializableItems.Add(blob3); testClient.Send(test); } if (key == ConsoleKey.T) { Console.WriteLine("Sending round trip"); ServerPingHopperPacket hopper = (ServerPingHopperPacket)IntrepidSerialize.TakeFromPool(PacketType.ServerPingHopper); hopper.Stamp("client start"); testClient.Send(hopper); } } while (key != ConsoleKey.Escape); testClient.Close(); }
void HandleNormalPackets(Queue <BasePacket> listOfPackets) { foreach (var packet in listOfPackets) { //Console.WriteLine("normal packet received {0} .. isLoggedIn = true", packet.PacketType); numPacketsReceived++; // normal processing if (packet is PlayerFullPacket && localPlayer.entityId == 0) { localPlayer.entityId = (packet as PlayerFullPacket).entityId; } /* ServerTick st = packet as ServerTick; * if(st != null) * { * Console.WriteLine("server tick {0}", st.TickCount); * * continue; * }*/ KeepAlive ka = packet as KeepAlive; if (ka != null) { KeepAliveResponse kar = (KeepAliveResponse)IntrepidSerialize.TakeFromPool(PacketType.KeepAliveResponse); socket.Send(kar); } if (packet is ServerPingHopperPacket) { ServerPingHopperPacket hopper = packet as ServerPingHopperPacket; hopper.Stamp("client end"); hopper.PrintList(); } if (packet is WorldEntityPacket) { WorldEntityPacket wep = packet as WorldEntityPacket; if (localPlayer.entityId == wep.entityId) { localPlayer.position = wep.position.Get(); localPlayer.rotation = wep.rotation.Get(); } } EntityPacket ep = packet as EntityPacket; if (ep != null) { //entityId = ep.entityId; int tempEntityId = ep.entityId; if (localPlayer.entityId == tempEntityId) { Console.Write("This entity packet updated {0}\n", tempEntityId); } /* else * { * Console.Write("Entity update packet {0}\n", tempEntityId); * }*/ continue; } // Console.WriteLine("normal packet received {0}", packet.PacketType); IntrepidSerialize.ReturnToPool(packet); } }
private void OnWorldEntityPacket(WorldEntityPacket packet) { transform.position = packet.position.Get(); transform.rotation = Quaternion.Euler(packet.rotation.Get()); }
private void Sock_OnPacketsReceived(IPacketSend arg1, Queue <BasePacket> listOfPackets) { // all of these boolean checks should be replaced by a Strategy if (isBoundToGateway == true) { foreach (var packet in listOfPackets) { numPacketsReceived++; // normal processing KeepAlive ka = packet as KeepAlive; if (ka != null) { KeepAliveResponse kar = (KeepAliveResponse)IntrepidSerialize.TakeFromPool(PacketType.KeepAliveResponse); socket.Send(kar); continue; } WorldEntityPacket wep = packet as WorldEntityPacket; if (wep != null) { foreach (var playerId in playerIds) { if (playerId.entityId == wep.entityId) { playerId.position = wep.position.Get(); playerId.rotation = wep.rotation.Get(); SendAllEntityPositions(); } } continue; } ServerConnectionHeader sch = packet as ServerConnectionHeader; if (sch != null) { nextConnectionId = sch.connectionId; continue; } PlayerSaveStatePacket pss = packet as PlayerSaveStatePacket; if (pss != null) { HandlePlayerSaveState(pss); continue; } if (packet is ServerPingHopperPacket) { HandleServerHopping(packet as ServerPingHopperPacket); continue; } } } else { foreach (var packet in listOfPackets) { numPacketsReceived++; if (packet is ServerIdPacket) { ServerIdPacket id = packet as ServerIdPacket; if (id != null && id.Type == ServerIdPacket.ServerType.Gateway) { isBoundToGateway = true; break; } } } } }