diff options
-rw-r--r-- | src/GameState.cpp | 5 | ||||
-rw-r--r-- | src/GameState.hpp | 3 | ||||
-rw-r--r-- | src/RendererWorld.cpp | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/GameState.cpp b/src/GameState.cpp index c42092a..fabfdb8 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -58,6 +58,9 @@ void GameState::Update(float deltaTime) { isBlockSelected = raycast.isHit; raycastHit = raycast.hitPos; + + if (doDaylightCycle) + interpolatedTimeOfDay += 20.0 * deltaTime; } } @@ -433,8 +436,10 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) { case TimeUpdate: { auto packet = std::static_pointer_cast<PacketTimeUpdate>(ptr); + doDaylightCycle = TimeOfDay != packet->TimeOfDay; WorldAge = packet->WorldAge; TimeOfDay = packet->TimeOfDay; + interpolatedTimeOfDay = TimeOfDay; break; } diff --git a/src/GameState.hpp b/src/GameState.hpp index 81ab3dc..e96af29 100644 --- a/src/GameState.hpp +++ b/src/GameState.hpp @@ -67,4 +67,7 @@ public: Vector selectedBlock; float distanceToSelectedBlock; VectorF raycastHit; + + double interpolatedTimeOfDay; + bool doDaylightCycle = true; }; diff --git a/src/RendererWorld.cpp b/src/RendererWorld.cpp index 2ed2620..023ac32 100644 --- a/src/RendererWorld.cpp +++ b/src/RendererWorld.cpp @@ -349,7 +349,7 @@ void RendererWorld::Render(RenderState & renderState) { model = glm::translate(model, gs->player->pos.glm()); const float scale = 1000000.0f; model = glm::scale(model, glm::vec3(scale, scale, scale)); - float shift = gs->TimeOfDay / 24000.0f; + float shift = gs->interpolatedTimeOfDay / 24000.0f; if (shift < 0) shift *= -1.0f; model = glm::rotate(model, glm::radians(90.0f), glm::vec3(0, 1.0f, 0.0f)); |