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);
// Used to create package from already existing data buffer.
Package(char* data, const int sizeOfPackage);
~Package();
// Add primitive types like int, float, char...
template<typename T>
@@ -35,9 +36,13 @@ public:
m_ReturnDataOffset += sizeof(T);
return returnValue;
}
// Add a string to the message
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.
std::string PopFrontString();
char* PopData(int SizeOfData);
int Size() { return m_Offset; };
char* Data() { return m_Data; };
+11 -8
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 = "";
@@ -165,8 +165,6 @@ void Client::ParseMessageType(Package& package)
void Client::ParseConnect(Package& package)
{
m_PacketID = package.PopFrontPrimitive<int>();
m_PreviousPacketID = m_PacketID;
m_PlayerID = package.PopFrontPrimitive<int>();
std::cout << m_PacketID << ": I am player: " << m_PlayerID << std::endl;
}
@@ -222,13 +220,18 @@ void Client::ParseSnapshot(Package& package)
break;
}
// 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
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);
}
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);
}