Merge remote-tracking branch 'origin/Networking' into Networking
# Conflicts: # include/Engine/Network/Client.h # src/Engine/Network/Client.cpp
This commit is contained in:
@@ -42,6 +42,7 @@ private:
|
|||||||
void ParseSnapshot(Package& package);
|
void ParseSnapshot(Package& package);
|
||||||
void CreateNewPlayer(int i);
|
void CreateNewPlayer(int i);
|
||||||
void IdentifyPacketLoss();
|
void IdentifyPacketLoss();
|
||||||
|
bool IsConnected();
|
||||||
|
|
||||||
// UDP logic
|
// UDP logic
|
||||||
boost::asio::ip::udp::endpoint m_ReceiverEndpoint;
|
boost::asio::ip::udp::endpoint m_ReceiverEndpoint;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
struct PlayerDefinition {
|
struct PlayerDefinition {
|
||||||
unsigned int EntityID = -1;
|
int EntityID = -1;
|
||||||
std::string Name = "";
|
std::string Name = "";
|
||||||
boost::asio::ip::udp::endpoint Endpoint;
|
boost::asio::ip::udp::endpoint Endpoint;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ private:
|
|||||||
void ReadFromClients();
|
void ReadFromClients();
|
||||||
void InputLoop();
|
void InputLoop();
|
||||||
|
|
||||||
|
// Network functions
|
||||||
int Receive(char* data, size_t length);
|
int Receive(char* data, size_t length);
|
||||||
void Send(Package& package, int playerID);
|
void Send(Package& package, int playerID);
|
||||||
void Send(Package& package);
|
void Send(Package& package);
|
||||||
|
|||||||
@@ -78,7 +78,9 @@ void Client::ReadFromServer()
|
|||||||
}
|
}
|
||||||
std::clock_t currentTime = std::clock();
|
std::clock_t currentTime = std::clock();
|
||||||
if (snapshotInterval < (1000 * (currentTime - previousSnapshotMessage) / (double)CLOCKS_PER_SEC)) {
|
if (snapshotInterval < (1000 * (currentTime - previousSnapshotMessage) / (double)CLOCKS_PER_SEC)) {
|
||||||
SendSnapshotToServer();
|
if (IsConnected()) {
|
||||||
|
SendSnapshotToServer();
|
||||||
|
}
|
||||||
previousSnapshotMessage = currentTime;
|
previousSnapshotMessage = currentTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -221,7 +223,8 @@ void Client::ParseSnapshot(Package& package)
|
|||||||
// Not a connected player
|
// Not a connected player
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Read position data
|
if (m_PlayerDefinitions[i].EntityID != -1) {
|
||||||
|
// Read position data
|
||||||
//glm::vec3 playerPos;
|
//glm::vec3 playerPos;
|
||||||
//playerPos.x = package.PopFrontPrimitive<float>();
|
//playerPos.x = package.PopFrontPrimitive<float>();
|
||||||
//playerPos.y = package.PopFrontPrimitive<float>();
|
//playerPos.y = package.PopFrontPrimitive<float>();
|
||||||
@@ -229,8 +232,7 @@ void Client::ParseSnapshot(Package& package)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Move player to server position
|
// Move player to server position
|
||||||
if (m_PlayerDefinitions[i].EntityID != -1) {
|
|
||||||
//m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform")["Position"] = playerPos;
|
//m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform")["Position"] = playerPos;
|
||||||
int dataSize = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform").Info.Meta.Stride;
|
int dataSize = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform").Info.Meta.Stride;
|
||||||
memcpy(m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform").Data, package.PopData(dataSize), dataSize);
|
memcpy(m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform").Data, package.PopData(dataSize), dataSize);
|
||||||
@@ -293,25 +295,27 @@ void Client::MoveMessageHead(char*& data, size_t& length, size_t stepSize)
|
|||||||
|
|
||||||
bool Client::OnInputCommand(const Events::InputCommand & e)
|
bool Client::OnInputCommand(const Events::InputCommand & e)
|
||||||
{
|
{
|
||||||
ComponentWrapper& player = m_World->GetComponent(m_PlayerDefinitions[m_PlayerID].EntityID, "Player");
|
if (m_PlayerID != -1) {
|
||||||
if (e.Command == "Forward") {
|
ComponentWrapper& player = m_World->GetComponent(m_PlayerDefinitions[m_PlayerID].EntityID, "Player");
|
||||||
if (e.Value > 0) {
|
if (e.Command == "Forward") {
|
||||||
(bool&)player["Forward"] = true;
|
if (e.Value > 0) {
|
||||||
} else if (e.Value < 0) {
|
(bool&)player["Forward"] = true;
|
||||||
(bool&)player["Back"] = true;
|
} else if (e.Value < 0) {
|
||||||
} else {
|
(bool&)player["Back"] = true;
|
||||||
(bool&)player["Forward"] = false;
|
} else {
|
||||||
(bool&)player["Back"] = false;
|
(bool&)player["Forward"] = false;
|
||||||
|
(bool&)player["Back"] = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if (e.Command == "Right") {
|
||||||
if (e.Command == "Right") {
|
if (e.Value > 0) {
|
||||||
if (e.Value > 0) {
|
(bool&)player["Right"] = true;
|
||||||
(bool&)player["Right"] = true;
|
} else if (e.Value < 0) {
|
||||||
} else if (e.Value < 0) {
|
(bool&)player["Left"] = true;
|
||||||
(bool&)player["Left"] = true;
|
} else {
|
||||||
} else {
|
(bool&)player["Left"] = false;
|
||||||
(bool&)player["Left"] = false;
|
(bool&)player["Right"] = false;
|
||||||
(bool&)player["Right"] = false;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e.Command == "Sprint") { // Connect for now
|
if (e.Command == "Sprint") { // Connect for now
|
||||||
@@ -336,3 +340,13 @@ void Client::IdentifyPacketLoss()
|
|||||||
LOG_INFO("%i Packet(s) were lost...", difference);
|
LOG_INFO("%i Packet(s) were lost...", difference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Client::IsConnected()
|
||||||
|
{
|
||||||
|
if (m_PlayerID != -1) {
|
||||||
|
if (m_PlayerDefinitions[m_PlayerID].EntityID != -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user