diff --git a/include/Game/InterpolationSystem.h b/include/Game/InterpolationSystem.h index c87ee5a7..3984ab5e 100644 --- a/include/Game/InterpolationSystem.h +++ b/include/Game/InterpolationSystem.h @@ -12,15 +12,14 @@ #include "Network/EInterpolate.h" -struct Transform { - glm::vec3 Position; - glm::vec3 Scale; - glm::vec3 Orientation; - double interpolationTime; -}; - class InterpolationSystem : public PureSystem { + struct Transform { + glm::vec3 Position; + glm::vec3 Scale; + glm::vec3 Orientation; + double interpolationTime; + }; public: InterpolationSystem(EventBroker* eventbroker) : PureSystem(eventbroker, "Transform") @@ -31,7 +30,8 @@ public: virtual void UpdateComponent(World* world, ComponentWrapper& transform, double dt) override; private: - std::unordered_map> m_InterpolationPoints; + //std::unordered_map> m_InterpolationPoints; + std::unordered_map m_InterpolationPoints; glm::vec3 vectorInterpolation(glm::vec3 prev, glm::vec3 next, double currentTime); diff --git a/src/Engine/Network/Packet.cpp b/src/Engine/Network/Packet.cpp index 2b2c7938..568a78e3 100644 --- a/src/Engine/Network/Packet.cpp +++ b/src/Engine/Network/Packet.cpp @@ -40,7 +40,7 @@ void Packet::WriteString(const std::string& str) // Message, add one extra byte for null terminator int sizeOfString = str.size() + 1; if (m_Offset + sizeOfString > m_MaxPacketSize) { - LOG_WARNING("Package::WriteString(): Data size in packet exceeded maximum package size. New size is %i bytes\n", m_MaxPacketSize*2); + //LOG_WARNING("Package::WriteString(): Data size in packet exceeded maximum package size. New size is %i bytes\n", m_MaxPacketSize*2); resizeData(); } memcpy(m_Data + m_Offset, str.data(), sizeOfString * sizeof(char)); @@ -50,7 +50,7 @@ void Packet::WriteString(const std::string& str) void Packet::WriteData(char * data, int sizeOfData) { if (m_Offset + sizeOfData > m_MaxPacketSize) { - LOG_WARNING("Packet::WriteData(): Data size in packet exceeded maximum packet size. New size is %i bytes\n", m_MaxPacketSize*2); + //LOG_WARNING("Packet::WriteData(): Data size in packet exceeded maximum packet size. New size is %i bytes\n", m_MaxPacketSize*2); resizeData(); } memcpy(m_Data + m_Offset, data, sizeOfData); @@ -61,7 +61,7 @@ std::string Packet::ReadString() { std::string returnValue(m_Data + m_ReturnDataOffset); if (m_Offset < m_ReturnDataOffset + returnValue.size()) { - LOG_WARNING("packet ReadString(): Oh no! You are trying to remove things outside my memory kingdom"); + //LOG_WARNING("packet ReadString(): Oh no! You are trying to remove things outside my memory kingdom"); return "PopFrontString Failed"; } // +1 for null terminator. @@ -72,7 +72,7 @@ std::string Packet::ReadString() char * Packet::ReadData(int SizeOfData) { if (m_Offset < m_ReturnDataOffset + SizeOfData) { - LOG_WARNING("packet ReadData(): Oh no! You are trying to remove things outside my memory kingdom"); + //LOG_WARNING("packet ReadData(): Oh no! You are trying to remove things outside my memory kingdom"); return nullptr; } unsigned int oldReturnDataOffset = m_ReturnDataOffset; diff --git a/src/Engine/Network/Server.cpp b/src/Engine/Network/Server.cpp index 9ec1a041..1f9db461 100644 --- a/src/Engine/Network/Server.cpp +++ b/src/Engine/Network/Server.cpp @@ -227,7 +227,7 @@ void Server::parseOnInputCommand(Packet& packet) e.PlayerID = playerID; // Set correct player id e.Value = packet.ReadPrimitive(); m_EventBroker->Publish(e); - LOG_INFO("Server::parseOnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); + //LOG_INFO("Server::parseOnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); } } } @@ -239,7 +239,7 @@ void Server::parseOnPlayerDamage(Packet & packet) e.PlayerDamagedID = packet.ReadPrimitive(); e.TypeOfDamage = packet.ReadString(); m_EventBroker->Publish(e); - LOG_DEBUG("Server::parseOnPlayerDamage: Command is %s. Value is %f. PlayerID is %i.", e.DamageAmount, e.PlayerDamagedID, e.TypeOfDamage.c_str()); + //LOG_DEBUG("Server::parseOnPlayerDamage: Command is %s. Value is %f. PlayerID is %i.", e.DamageAmount, e.PlayerDamagedID, e.TypeOfDamage.c_str()); } void Server::parseConnect(Packet& packet) diff --git a/src/Game/InterpolationSystem.cpp b/src/Game/InterpolationSystem.cpp index d2d81fda..d2413234 100644 --- a/src/Game/InterpolationSystem.cpp +++ b/src/Game/InterpolationSystem.cpp @@ -1,23 +1,32 @@ #include "InterpolationSystem.h" +//void InterpolationSystem::UpdateComponent(World * world, ComponentWrapper & transform, double dt) +//{ +// if (m_InterpolationPoints[transform.EntityID].size() > 0) { +// Transform& sTransform = m_InterpolationPoints[transform.EntityID].front(); +// sTransform.interpolationTime += dt; +// if (sTransform.interpolationTime > 0.05) { +// double time = std::fmod(sTransform.interpolationTime, 0.05f); +// m_InterpolationPoints[transform.EntityID].pop(); +// if (m_InterpolationPoints[transform.EntityID].size() <= 0) { +// return; +// } +// sTransform = m_InterpolationPoints[transform.EntityID].front(); +// sTransform.interpolationTime = time; +// } +// glm::vec3 nextPosition = sTransform.Position; +// glm::vec3 currentPosition = static_cast(transform["Position"]); +// transform["Position"] = vectorInterpolation(currentPosition, nextPosition, sTransform.interpolationTime); +// } +//} + void InterpolationSystem::UpdateComponent(World * world, ComponentWrapper & transform, double dt) { - if (m_InterpolationPoints[transform.EntityID].size() > 0) { - Transform& sTransform = m_InterpolationPoints[transform.EntityID].front(); - sTransform.interpolationTime += dt; - if (sTransform.interpolationTime > 0.05) { - double time = std::fmod(sTransform.interpolationTime, 0.05f); - m_InterpolationPoints[transform.EntityID].pop(); - if (m_InterpolationPoints[transform.EntityID].size() <= 0) { - return; - } - sTransform = m_InterpolationPoints[transform.EntityID].front(); - sTransform.interpolationTime = time; - } - glm::vec3 nextPosition = sTransform.Position; - glm::vec3 currentPosition = static_cast(transform["Position"]); - transform["Position"] = vectorInterpolation(currentPosition, nextPosition, sTransform.interpolationTime); - } + Transform& sTransform = m_InterpolationPoints[transform.EntityID]; + sTransform.interpolationTime += dt; + glm::vec3 nextPosition = sTransform.Position; + glm::vec3 currentPosition = static_cast(transform["Position"]); + transform["Position"] = vectorInterpolation(currentPosition, nextPosition, sTransform.interpolationTime); } glm::vec3 InterpolationSystem::vectorInterpolation(glm::vec3 prev, glm::vec3 next, double currentTime) @@ -37,14 +46,17 @@ bool InterpolationSystem::OnInterpolate(const Events::Interpolate & e) memcpy(&transform.Orientation, e.DataArray.get() + offset, sizeof(glm::vec3)); offset += sizeof(glm::vec3); memcpy(&transform.Scale, e.DataArray.get() + offset, sizeof(glm::vec3)); - + transform.interpolationTime = 0; + m_InterpolationPoints[e.Entity] = transform; // Check if queue already exists - if (m_InterpolationPoints.find(e.Entity) != m_InterpolationPoints.end()) { // Did exist, push to queue - m_InterpolationPoints[e.Entity].push(transform); - } else { // Did not exist, create queue - std::queue transformQueue; - transformQueue.push(transform); - m_InterpolationPoints[e.Entity] = transformQueue; - } + //if (m_InterpolationPoints.find(e.Entity) != m_InterpolationPoints.end()) { // Did exist, push to queue + // m_InterpolationPoints[e.Entity].push(transform); + //} + + //else { // Did not exist, create queue + // std::queue transformQueue; + // transformQueue.push(transform); + // m_InterpolationPoints[e.Entity] = transformQueue; + //} return false; }