Can now send transform components.
This commit is contained in:
@@ -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; };
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user