Can now send transform components.

This commit is contained in:
stiffly
2015-12-16 17:56:44 +01:00
parent 6eebce05af
commit 97a0d97b0b
4 changed files with 40 additions and 15 deletions
+5
View File
@@ -14,6 +14,7 @@ public:
Package(MessageType type, unsigned int& packageID); Package(MessageType type, unsigned int& packageID);
// Used to create package from already existing data buffer. // Used to create package from already existing data buffer.
Package(char* data, const int sizeOfPackage); Package(char* data, const int sizeOfPackage);
~Package(); ~Package();
// Add primitive types like int, float, char... // Add primitive types like int, float, char...
template<typename T> template<typename T>
@@ -35,9 +36,13 @@ public:
m_ReturnDataOffset += sizeof(T); m_ReturnDataOffset += sizeof(T);
return returnValue; return returnValue;
} }
// Add a string to the message
void AddString(std::string str); void AddString(std::string str);
// Add data to the message
void AddData(char* data, int sizeOfData);
// Pops the first element as if it was a string. // Pops the first element as if it was a string.
std::string PopFrontString(); std::string PopFrontString();
char* PopData(int SizeOfData);
int Size() { return m_Offset; }; int Size() { return m_Offset; };
char* Data() { return m_Data; }; char* Data() { return m_Data; };
+11 -8
View File
@@ -5,7 +5,7 @@ using namespace boost::asio::ip;
Client::Client() : m_Socket(m_IOService) 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 // Set up network stream
m_NextSnapshot.InputForward = ""; m_NextSnapshot.InputForward = "";
m_NextSnapshot.InputRight = ""; m_NextSnapshot.InputRight = "";
@@ -165,8 +165,6 @@ void Client::ParseMessageType(Package& package)
void Client::ParseConnect(Package& package) void Client::ParseConnect(Package& package)
{ {
m_PacketID = package.PopFrontPrimitive<int>();
m_PreviousPacketID = m_PacketID;
m_PlayerID = package.PopFrontPrimitive<int>(); m_PlayerID = package.PopFrontPrimitive<int>();
std::cout << m_PacketID << ": I am player: " << m_PlayerID << std::endl; std::cout << m_PacketID << ": I am player: " << m_PlayerID << std::endl;
} }
@@ -222,13 +220,18 @@ void Client::ParseSnapshot(Package& package)
break; break;
} }
// Read position data // 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>();
playerPos.z = package.PopFrontPrimitive<float>(); //playerPos.z = package.PopFrontPrimitive<float>();
// Move player to server position // Move player to server position
if (m_PlayerDefinitions[i].EntityID != -1) { 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;
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); 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 Package::PopFrontString()
{ {
std::string returnValue(m_Data + m_ReturnDataOffset); std::string returnValue(m_Data + m_ReturnDataOffset);
@@ -44,3 +53,10 @@ std::string Package::PopFrontString()
m_ReturnDataOffset += returnValue.size() + 1; m_ReturnDataOffset += returnValue.size() + 1;
return returnValue; 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; continue;
} }
//// Pack player pos into data package
// Pack player pos into data package //glm::vec3 playerPos = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform")["Position"];
glm::vec3 playerPos = m_World->GetComponent(m_PlayerDefinitions[i].EntityID, "Transform")["Position"]; ////glm::vec3 playerPos = glm::vec3(1.0f);
//glm::vec3 playerPos = glm::vec3(1.0f); //package.AddPrimitive<float>(playerPos.x);
package.AddPrimitive<float>(playerPos.x); //package.AddPrimitive<float>(playerPos.y);
package.AddPrimitive<float>(playerPos.y); //package.AddPrimitive<float>(playerPos.z);
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); Broadcast(package);
} }