Merge remote-tracking branch 'origin/Networking' into Networking

# Conflicts:
#	src/Engine/Network/Client.cpp
This commit is contained in:
Jocke
2015-12-17 09:47:15 +01:00
4 changed files with 40 additions and 13 deletions
+11 -6
View File
@@ -5,7 +5,7 @@ using namespace boost::asio::ip;
Client::Client() : m_Socket(m_IOService)
{
m_ReceiverEndpoint = udp::endpoint(boost::asio::ip::address::from_string("192.168.1.6"), 13);
m_ReceiverEndpoint = udp::endpoint(boost::asio::ip::address::from_string("192.168.1.2"), 13);
// Set up network stream
m_NextSnapshot.InputForward = "";
m_NextSnapshot.InputRight = "";
@@ -225,12 +225,17 @@ void Client::ParseSnapshot(Package& package)
}
if (m_PlayerDefinitions[i].EntityID != -1) {
// Read position data
glm::vec3 playerPos;
playerPos.x = package.PopFrontPrimitive<float>();
playerPos.y = package.PopFrontPrimitive<float>();
playerPos.z = package.PopFrontPrimitive<float>();
//glm::vec3 playerPos;
//playerPos.x = package.PopFrontPrimitive<float>();
//playerPos.y = package.PopFrontPrimitive<float>();
//playerPos.z = package.PopFrontPrimitive<float>();
// Move player to server position
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;
memcpy(m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform").Data, package.PopData(dataSize), dataSize);
}
}
}
+16
View File
@@ -33,6 +33,15 @@ void Package::AddString(std::string str)
m_Offset += (str.size() + 1) * sizeof(char);
}
void Package::AddData(char * data, int sizeOfData)
{
if (m_Offset + sizeOfData > 128) {
LOG_WARNING("Package::AddData(): Data size in package exceeded maximum package size.\n");
}
memcpy(m_Data + m_Offset, data, sizeOfData);
m_Offset += sizeOfData;
}
std::string Package::PopFrontString()
{
std::string returnValue(m_Data + m_ReturnDataOffset);
@@ -44,3 +53,10 @@ std::string Package::PopFrontString()
m_ReturnDataOffset += returnValue.size() + 1;
return returnValue;
}
char * Package::PopData(int SizeOfData)
{
unsigned int oldReturnDataOffset = m_ReturnDataOffset;
m_ReturnDataOffset += SizeOfData;
return (m_Data + oldReturnDataOffset);
}
+8 -7
View File
@@ -229,13 +229,14 @@ void Server::SendSnapshot()
continue;
}
// Pack player pos into data package
glm::vec3 playerPos = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform")["Position"];
//glm::vec3 playerPos = glm::vec3(1.0f);
package.AddPrimitive<float>(playerPos.x);
package.AddPrimitive<float>(playerPos.y);
package.AddPrimitive<float>(playerPos.z);
//// Pack player pos into data package
//glm::vec3 playerPos = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform")["Position"];
////glm::vec3 playerPos = glm::vec3(1.0f);
//package.AddPrimitive<float>(playerPos.x);
//package.AddPrimitive<float>(playerPos.y);
//package.AddPrimitive<float>(playerPos.z);
auto transform = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform");
package.AddData(transform.Data, transform.Info.Meta.Stride);
}
Broadcast(package);
}