From b7a7f7fd5e4279af002ecfa03cc44c4ee7a37ec4 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Fri, 4 Mar 2016 15:02:01 +0100 Subject: [PATCH] ???? --- include/Engine/Network/Client.h | 2 +- include/Engine/Network/Server.h | 2 +- .../Schema/Entities/PlayerAssaultBlue.xml | 771 ++++++++++-------- .../Schema/Entities/PlayerAssaultRed.xml | 771 ++++++++++-------- src/Engine/Network/Client.cpp | 28 +- src/Engine/Network/Server.cpp | 71 +- src/Engine/Network/UDPServer.cpp | 11 +- .../Systems/Weapon/AssaultWeaponBehaviour.cpp | 16 +- 8 files changed, 951 insertions(+), 721 deletions(-) diff --git a/include/Engine/Network/Client.h b/include/Engine/Network/Client.h index 4ee071d2..2fa81549 100644 --- a/include/Engine/Network/Client.h +++ b/include/Engine/Network/Client.h @@ -52,7 +52,7 @@ public: void Connect(std::string address, int port); void Update() override; private: - UDPClient m_Unreliable; + //UDPClient m_Unreliable; TCPClient m_Reliable; std::vector m_PlayerSpawnEvents; void parseSpawnEvents(); diff --git a/include/Engine/Network/Server.h b/include/Engine/Network/Server.h index 395c80c7..48b7bcfa 100644 --- a/include/Engine/Network/Server.h +++ b/include/Engine/Network/Server.h @@ -36,7 +36,7 @@ public: private: // Network channels TCPServer m_Reliable; - UDPServer m_Unreliable; + //UDPServer m_Unreliable; UDPServer m_ServerlistRequest; // dont forget to set these in the childrens receive logic boost::asio::ip::address m_Address; diff --git a/resources/Schema/Entities/PlayerAssaultBlue.xml b/resources/Schema/Entities/PlayerAssaultBlue.xml index 057a0abb..7773235b 100644 --- a/resources/Schema/Entities/PlayerAssaultBlue.xml +++ b/resources/Schema/Entities/PlayerAssaultBlue.xml @@ -6,7 +6,9 @@ - + + 0.5 + @@ -519,7 +521,113 @@ - + + + + + Models/Weapons/Blue/AssaultWeaponBlue.mesh + + + + + + + + + + + + + + Schema/Entities/RayBlue.xml + + + + + + + + + + + + Schema/Entities/ReloadEffectView.xml + + + + + + + + + + + + + + + + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + + + + + + 32 + Fonts/DroidSans.ttf,64 + + + + PlayerAssault + AssaultWeapon + MagazineAmmo + + + + + + + + + + + 320 + Fonts/DroidSans.ttf,64 + + + + PlayerAssault + AssaultWeapon + Ammo + + + + + + + + + + + + + + + @@ -652,179 +760,192 @@ - - - BlendTreeAim - BlendTreeAssault - - - - - Models/Characters/Assault/AssaultBlue.mesh - - false - - - - - - - - R_Arm_Weapon_Joint - - - AssaultWeapon - - - - - - Schema/Entities/WeaponAssaultBlueWorld.xml - - - - - - - - - - - - R_Arm_Weapon_Joint - - - SidearmWeapon - - - - - - Schema/Entities/SidearmWeaponWorld.xml - - - - - - - - - - - - AimPrimary - AimSecondary - 0 - true - + + BlendTreeAim + BlendTreeAssault + + + + + Models/Characters/Assault/AssaultBlue.mesh + + true + - + - - AimSecWepA - - false - true - - + + R_Arm_Weapon_Joint + + + AssaultWeapon + + + + + + Schema/Entities/WeaponAssaultBlueWorld.xml + + + + + - + - - AimRifleA - - false - true - - + + R_Arm_Weapon_Joint + + + SidearmWeapon + + + + + + Schema/Entities/SidearmWeaponWorld.xml + + + + + - - - - - - ReloadSwitchBlend - FinalMovementBlend - - - - - + - StandCrouchBlend - JumpDashBlend - 2.5146881298480398e-63 + AimPrimary + AimSecondary + 0 true - + + + + AimSecWepA + + false + true + + + + + + + + + AimRifleA + + false + true + + + + + + + + + + + ReloadSwitchBlend + FinalMovementBlend + + + + + - StandMovement - CrouchMovement - 0 + StandCrouchBlend + JumpDashBlend + 2.5146881298480398e-63 true - + - MovementBlend - Idle - 1 + StandMovement + CrouchMovement + 0 + true - + - Walk - StrafeLRBlend - 0 + MovementBlend + Idle + 1 - + - Left - Right - 0.033793529385008014 + Walk + StrafeLRBlend + 0 - + - - CrouchStrafeLeftF - - 1 - true - + + Left + Right + 0.033793529385008014 + - + + + + + CrouchStrafeLeftF + + 1 + true + + + + + + + + + CrouchStrafeRightF + + 1 + true + + + + + + - + - CrouchStrafeRightF - + CrouchWalkF + 1 true @@ -834,11 +955,118 @@ - + - CrouchWalkF - + CrouchF + + 1 + + + + + + + + + + + MovementBlend + Idle + 1 + + + + + + + + RunWalkBlend + StrafeLRBlend + 2.4565650245976452e-16 + + + + + + + + Left + Right + 0.033793529385008014 + + + + + + + + StrafeLeftF + + 1 + true + + + + + + + + + StrafeRightF + + 1 + true + + + + + + + + + + + Walk + Run + 1.2938206818383024e-24 + + + + + + + + WalkF + + 1 + true + + + + + + + + + RunF + + 1 + true + + + + + + + + + + + + + IdleF + 1 true @@ -848,68 +1076,70 @@ - + + + + + + Jump + DashBlend + 1 + true + + + + + - CrouchF - + JumpF + 1 + false - - - - - - MovementBlend - Idle - 1 - - - - - + - RunWalkBlend - StrafeLRBlend - 2.4565650245976452e-16 + DashFBBlend + DashLRBlend + 0.014621149736541383 - + - Walk - Run - 1.2938206818383024e-24 + DashForward + DashBackward + 0.014363533804961248 - + - WalkF - - 1 - true + DashForwardF + + 2 + false - + - RunF - - 1 - true + DashBackwardF + + 2 + false @@ -917,35 +1147,35 @@ - + - Left - Right - 0.033793529385008014 + DashLeft + DashRight + 4.3244885367500671e-16 - + - StrafeLeftF - - 1 - true + DashLeftF + + 2 + false - + - StrafeRightF - - 1 - true + DashRightF + + 2 + false @@ -955,84 +1185,71 @@ - - - - IdleF - - 1 - true - - - - - - + - Jump - DashBlend + ReloadSwitch + WeaponActionBlend 1 true - + - JumpF - + ReloadSwitchU + 1 - false - + - DashFBBlend - DashLRBlend - 0.014621149736541383 + IdleBlend + ShootBlend + 0 - + - DashForward - DashBackward - 0.014363533804961248 + IdlePrimary + IdleSecondary + 0 - + - DashForwardF - - 2 - false + IdleAssaultRifleU + + 1 + true - + - DashBackwardF - - 2 - false + IdleSecWepU + + 1 + true @@ -1040,35 +1257,31 @@ - + - DashLeft - DashRight - 4.3244885367500671e-16 + ShootPrimary + ShootSecondary + 0 - + - DashLeftF - - 2 - false + ShootFastRifleU + + 1 - + - DashRightF - - 2 - false + ShootSecWepFastU @@ -1082,114 +1295,8 @@ - - - - ReloadSwitch - WeaponActionBlend - 1 - true - - - - - - - - ReloadSwitchU - - 1 - - - - - - - - - IdleBlend - ShootBlend - 0 - - - - - - - - IdlePrimary - IdleSecondary - 0 - - - - - - - - IdleAssaultRifleU - - 1 - true - - - - - - - - - IdleSecWepU - - 1 - true - - - - - - - - - - - ShootPrimary - ShootSecondary - 0 - - - - - - - - ShootFastRifleU - - 1 - - - - - - - - - ShootSecWepFastU - - - - - - - - - - - - - diff --git a/resources/Schema/Entities/PlayerAssaultRed.xml b/resources/Schema/Entities/PlayerAssaultRed.xml index 5811cc74..a198196e 100644 --- a/resources/Schema/Entities/PlayerAssaultRed.xml +++ b/resources/Schema/Entities/PlayerAssaultRed.xml @@ -6,7 +6,9 @@ - + + 0.5 + @@ -519,7 +521,113 @@ - + + + + + Models/Weapons/Red/AssaultWeaponRed.mesh + + + + + + + + + + + + + + Schema/Entities/RayRed.xml + + + + + + + + + + + + Schema/Entities/ReloadEffectView.xml + + + + + + + + + + + + + + + + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + + + + + + 32 + Fonts/DroidSans.ttf,64 + + + + PlayerAssault + AssaultWeapon + MagazineAmmo + + + + + + + + + + + 320 + Fonts/DroidSans.ttf,64 + + + + PlayerAssault + AssaultWeapon + Ammo + + + + + + + + + + + + + + + @@ -652,179 +760,192 @@ - - - BlendTreeAim - BlendTreeAssault - - - - - Models/Characters/Assault/AssaultRed.mesh - - false - - - - - - - - R_Arm_Weapon_Joint - - - AssaultWeapon - - - - - - Schema/Entities/WeaponAssaultRedWorld.xml - - - - - - - - - - - - R_Arm_Weapon_Joint - - - SidearmWeapon - - - - - - Schema/Entities/SidearmWeaponWorld.xml - - - - - - - - - - - - AimPrimary - AimSecondary - 0 - true - + + BlendTreeAim + BlendTreeAssault + + + + + Models/Characters/Assault/AssaultRed.mesh + + true + - + - - AimSecWepA - - false - true - - + + R_Arm_Weapon_Joint + + + AssaultWeapon + + + + + + Schema/Entities/WeaponAssaultRedWorld.xml + + + + + - + - - AimRifleA - - false - true - - + + R_Arm_Weapon_Joint + + + SidearmWeapon + + + + + + Schema/Entities/SidearmWeaponWorld.xml + + + + + - - - - - - ReloadSwitchBlend - FinalMovementBlend - - - - - + - StandCrouchBlend - JumpDashBlend - 2.5146881298480398e-63 + AimPrimary + AimSecondary + 0 true - + + + + AimSecWepA + + false + true + + + + + + + + + AimRifleA + + false + true + + + + + + + + + + + ReloadSwitchBlend + FinalMovementBlend + + + + + - StandMovement - CrouchMovement - 0 + StandCrouchBlend + JumpDashBlend + 2.5146881298480398e-63 true - + - MovementBlend - Idle - 1 + StandMovement + CrouchMovement + 0 + true - + - Walk - StrafeLRBlend - 0 + MovementBlend + Idle + 1 - + - Left - Right - 0.033793529385008014 + Walk + StrafeLRBlend + 0 - + - - CrouchStrafeLeftF - - 1 - true - + + Left + Right + 0.033793529385008014 + - + + + + + CrouchStrafeLeftF + + 1 + true + + + + + + + + + CrouchStrafeRightF + + 1 + true + + + + + + - + - CrouchStrafeRightF - + CrouchWalkF + 1 true @@ -834,11 +955,118 @@ - + - CrouchWalkF - + CrouchF + + 1 + + + + + + + + + + + MovementBlend + Idle + 1 + + + + + + + + RunWalkBlend + StrafeLRBlend + 2.4565650245976452e-16 + + + + + + + + Left + Right + 0.033793529385008014 + + + + + + + + StrafeLeftF + + 1 + true + + + + + + + + + StrafeRightF + + 1 + true + + + + + + + + + + + Walk + Run + 1.2938206818383024e-24 + + + + + + + + WalkF + + 1 + true + + + + + + + + + RunF + + 1 + true + + + + + + + + + + + + + IdleF + 1 true @@ -848,68 +1076,70 @@ - + + + + + + Jump + DashBlend + 1 + true + + + + + - CrouchF - + JumpF + 1 + false - - - - - - MovementBlend - Idle - 1 - - - - - + - RunWalkBlend - StrafeLRBlend - 2.4565650245976452e-16 + DashFBBlend + DashLRBlend + 0.014621149736541383 - + - Walk - Run - 1.2938206818383024e-24 + DashForward + DashBackward + 0.014363533804961248 - + - WalkF - - 1 - true + DashForwardF + + 2 + false - + - RunF - - 1 - true + DashBackwardF + + 2 + false @@ -917,35 +1147,35 @@ - + - Left - Right - 0.033793529385008014 + DashLeft + DashRight + 4.3244885367500671e-16 - + - StrafeLeftF - - 1 - true + DashLeftF + + 2 + false - + - StrafeRightF - - 1 - true + DashRightF + + 2 + false @@ -955,84 +1185,71 @@ - - - - IdleF - - 1 - true - - - - - - + - Jump - DashBlend + ReloadSwitch + WeaponActionBlend 1 true - + - JumpF - + ReloadSwitchU + 1 - false - + - DashFBBlend - DashLRBlend - 0.014621149736541383 + IdleBlend + ShootBlend + 0 - + - DashForward - DashBackward - 0.014363533804961248 + IdlePrimary + IdleSecondary + 0 - + - DashForwardF - - 2 - false + IdleAssaultRifleU + + 1 + true - + - DashBackwardF - - 2 - false + IdleSecWepU + + 1 + true @@ -1040,35 +1257,31 @@ - + - DashLeft - DashRight - 4.3244885367500671e-16 + ShootPrimary + ShootSecondary + 0 - + - DashLeftF - - 2 - false + ShootFastRifleU + + 1 - + - DashRightF - - 2 - false + ShootSecWepFastU @@ -1082,114 +1295,8 @@ - - - - ReloadSwitch - WeaponActionBlend - 1 - true - - - - - - - - ReloadSwitchU - - 1 - - - - - - - - - IdleBlend - ShootBlend - 0 - - - - - - - - IdlePrimary - IdleSecondary - 0 - - - - - - - - IdleAssaultRifleU - - 1 - true - - - - - - - - - IdleSecWepU - - 1 - true - - - - - - - - - - - ShootPrimary - ShootSecondary - 0 - - - - - - - - ShootFastRifleU - - 1 - - - - - - - - - ShootSecWepFastU - - - - - - - - - - - - - diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index d666e550..e29c4755 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -49,16 +49,16 @@ void Client::Connect(std::string address, int port) void Client::Update() { m_EventBroker->Process(); - while (m_Unreliable.IsSocketAvailable()) { - // Packet will get real data in receive - Packet packet(MessageType::Invalid); - m_Unreliable.Receive(packet); - if (packet.GetMessageType() == MessageType::Connect) { - parseUDPConnect(packet); - } else { - parseMessageType(packet); - } - } + //while (m_Unreliable.IsSocketAvailable()) { + // // Packet will get real data in receive + // Packet packet(MessageType::Invalid); + // m_Unreliable.Receive(packet); + // if (packet.GetMessageType() == MessageType::Connect) { + // parseUDPConnect(packet); + // } else { + // parseMessageType(packet); + // } + //} while (m_Reliable.IsSocketAvailable()) { // Packet will get real data in receive Packet packet(MessageType::Invalid); @@ -177,8 +177,8 @@ void Client::parseTCPConnect(Packet& packet) Packet UnreliablePacket(MessageType::Connect, m_SendPacketID); // Add player id and other stuff packet.WritePrimitive(m_PlayerID); - m_Unreliable.Send(packet); - LOG_INFO("Sent UDP Connect Server"); + // m_Unreliable.Send(packet); + // LOG_INFO("Sent UDP Connect Server"); } void Client::parsePlayerConnected(Packet & packet) @@ -476,7 +476,7 @@ bool Client::OnInputCommand(const Events::InputCommand & e) if (e.Command == "ConnectToServer") { // Connect for now if (e.Value > 0) { m_Reliable.Connect(m_PlayerName, m_Address, m_Port); - m_Unreliable.Connect(m_PlayerName, m_Address, m_Port); + // m_Unreliable.Connect(m_PlayerName, m_Address, m_Port); } //LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); return true; @@ -613,7 +613,7 @@ void Client::sendLocalPlayerTransform() packet.WritePrimitive((int)cAssaultWeapon["Ammo"]); } - m_Unreliable.Send(packet); + m_Reliable.Send(packet); } void Client::identifyPacketLoss() diff --git a/src/Engine/Network/Server.cpp b/src/Engine/Network/Server.cpp index 0927a675..5bfb4000 100644 --- a/src/Engine/Network/Server.cpp +++ b/src/Engine/Network/Server.cpp @@ -47,19 +47,19 @@ void Server::Update() } } - PlayerDefinition pd; - while (m_Unreliable.IsSocketAvailable()) { - // Packet will get real data in receive - Packet packet(MessageType::Invalid); - m_Unreliable.Receive(packet, pd); - m_Address = pd.Endpoint.address(); - m_Port = pd.Endpoint.port(); - if (packet.GetMessageType() == MessageType::Connect) { - parseUDPConnect(packet); - } else { - parseMessageType(packet); - } - } + //PlayerDefinition pd; + //while (m_Unreliable.IsSocketAvailable()) { + // // Packet will get real data in receive + // Packet packet(MessageType::Invalid); + // m_Unreliable.Receive(packet, pd); + // m_Address = pd.Endpoint.address(); + // m_Port = pd.Endpoint.port(); + // if (packet.GetMessageType() == MessageType::Connect) { + // parseUDPConnect(packet); + // } else { + // parseMessageType(packet); + // } + //} while (m_ServerlistRequest.IsSocketAvailable()) { Packet packet(MessageType::Invalid); @@ -162,7 +162,7 @@ void Server::unreliableBroadcast(Packet& packet) { for (auto& kv : m_ConnectedPlayers) { packet.ChangePacketID(kv.second.PacketID); - m_Unreliable.Send(packet, kv.second); +// m_Unreliable.Send(packet, kv.second); } } @@ -172,7 +172,7 @@ void Server::sendSnapshot() Packet packet(MessageType::Snapshot); addInputCommandsToPacket(packet); addPlayersToPacket(packet, EntityID_Invalid); - unreliableBroadcast(packet); + reliableBroadcast(packet); } void Server::addInputCommandsToPacket(Packet& packet) @@ -320,25 +320,28 @@ void Server::checkForTimeOuts() } } -void Server::parseUDPConnect(Packet & packet) -{ - // Pop size of message int - packet.ReadPrimitive(); - int messageType = packet.ReadPrimitive(); - // Read packet ID - m_PreviousPacketID = m_PacketID; // Set previous packet id - m_PacketID = packet.ReadPrimitive(); //Read new packet id - // parse player id and other stuff - PlayerID playerID = packet.ReadPrimitive(); - // Do something here? - boost::asio::ip::udp::endpoint endpoint(m_Address, m_Port); - m_ConnectedPlayers.at(playerID).Endpoint = endpoint; - LOG_INFO("parseUDPConnect: Spectator \"%s\" connected on IP: %s", m_ConnectedPlayers.at(playerID).Name.c_str(), m_ConnectedPlayers.at(playerID).Endpoint.address().to_string().c_str()); - // Send a message to the player that connected - Packet connnectPacket(MessageType::Connect, m_ConnectedPlayers.at(playerID).PacketID); - m_Unreliable.Send(connnectPacket); - LOG_INFO("UDP Connect sent to client"); -} +//void Server::parseUDPConnect(Packet & packet) +//{ +// // Pop size of message int +// packet.ReadPrimitive(); +// int messageType = packet.ReadPrimitive(); +// // Read packet ID +// m_PreviousPacketID = m_PacketID; // Set previous packet id +// m_PacketID = packet.ReadPrimitive(); //Read new packet id +// // parse player id and other stuff +// PlayerID playerID = packet.ReadPrimitive(); +// if (!EntityWrapper(m_World, playerID).Valid()) { +// +// } +// // Do something here? +// boost::asio::ip::udp::endpoint endpoint(m_Address, m_Port); +// m_ConnectedPlayers.at(playerID).Endpoint = endpoint; +// LOG_INFO("parseUDPConnect: Spectator \"%s\" connected on IP: %s", m_ConnectedPlayers.at(playerID).Name.c_str(), m_ConnectedPlayers.at(playerID).Endpoint.address().to_string().c_str()); +// // Send a message to the player that connected +// Packet connnectPacket(MessageType::Connect, m_ConnectedPlayers.at(playerID).PacketID); +// m_Unreliable.Send(connnectPacket); +// LOG_INFO("UDP Connect sent to client"); +//} void Server::parseTCPConnect(Packet & packet) { diff --git a/src/Engine/Network/UDPServer.cpp b/src/Engine/Network/UDPServer.cpp index 8c9950dc..bfa27d69 100644 --- a/src/Engine/Network/UDPServer.cpp +++ b/src/Engine/Network/UDPServer.cpp @@ -21,33 +21,38 @@ void UDPServer::Send(Packet& packet, PlayerDefinition & playerDefinition) boost::asio::buffer(packet.Data(), packet.Size()), playerDefinition.Endpoint, 0); + LOG_INFO("Size of packet is %i", bytesSent); } catch (const boost::system::system_error& e) { + LOG_INFO(e.what()); // TODO: Clean up invalid endpoints out of m_ConnectedPlayers later playerDefinition.Endpoint = boost::asio::ip::udp::endpoint(); } + } // Send back to endpoint of received packet void UDPServer::Send(Packet & packet) { packet.UpdateSize(); - m_Socket->send_to( + size_t bytesSent = m_Socket->send_to( boost::asio::buffer( packet.Data(), packet.Size()), m_ReceiverEndpoint, 0); + LOG_INFO("Size of packet is %i", bytesSent); } // Broadcasting respond specific logic void UDPServer::Send(Packet & packet, boost::asio::ip::udp::endpoint endpoint) { packet.UpdateSize(); - m_Socket->send_to( + size_t bytesSent = m_Socket->send_to( boost::asio::buffer( packet.Data(), packet.Size()), endpoint, 0); + LOG_INFO("Size of packet is %i", bytesSent); } // Broadcasting @@ -55,7 +60,7 @@ void UDPServer::Broadcast(Packet & packet, int port) { packet.UpdateSize(); m_Socket->set_option(boost::asio::socket_base::broadcast(true)); - m_Socket->send_to( + size_t bytesSent = m_Socket->send_to( boost::asio::buffer( packet.Data(), packet.Size()), diff --git a/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp b/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp index 2e21bc18..fc5334c9 100644 --- a/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp +++ b/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp @@ -39,8 +39,12 @@ void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& ammo = glm::max(0, ammo - (magSize - magAmmo)); magAmmo = glm::min(magSize, ammo); isReloading = false; - wi.FirstPersonEntity["Model"]["Visible"] = true; - wi.ThirdPersonEntity["Model"]["Visible"] = true; + if (wi.FirstPersonEntity.Valid()) { + wi.FirstPersonEntity["Model"]["Visible"] = true; + } + if (wi.ThirdPersonEntity.Valid()) { + wi.ThirdPersonEntity["Model"]["Visible"] = true; + } } // Restore view angle @@ -124,8 +128,12 @@ void AssaultWeaponBehaviour::OnReload(ComponentWrapper cWeapon, WeaponInfo& wi) if (reloadEffectSpawner.Valid()) { SpawnerSystem::Spawn(reloadEffectSpawner, reloadEffectSpawner); } - wi.FirstPersonEntity["Model"]["Visible"] = false; - wi.ThirdPersonEntity["Model"]["Visible"] = false; + if (wi.FirstPersonEntity.Valid()) { + wi.FirstPersonEntity["Model"]["Visible"] = false; + } + if (wi.ThirdPersonEntity.Valid()) { + wi.ThirdPersonEntity["Model"]["Visible"] = false; + } } // Sound