#5 - fixed interpolation & rollback

This commit is contained in:
Martin Slachta
2026-08-05 15:20:56 +02:00
parent 2e95c941ba
commit 0e639abcd2
14 changed files with 243 additions and 40 deletions
@@ -25,7 +25,7 @@ void EntityPositionInterpolator::set_position(Clock::time_point time_point, entt
return;
}
interpolation->push(Clock::now(), position);
interpolation->push(time_point, position);
}
glm::vec3 EntityPositionInterpolator::get_position(Clock::time_point time_point, entt::entity entity) {
@@ -35,9 +35,7 @@ glm::vec3 EntityPositionInterpolator::get_position(Clock::time_point time_point,
return glm::vec3();
}
auto now = Clock::now() - std::chrono::milliseconds(m_bufferingIntervalInMillis);
auto [from, to, value] = interpolation->get_values_around(now);
auto [from, to, value] = interpolation->get_values_around(time_point);
return glm::mix(from, to, value);
}
@@ -45,6 +43,10 @@ void EntityPositionInterpolator::interpolate_smoothed_entities(Clock::time_point
m_registry->view<EntityPositionInterpolation, Transform>()
.each([&](const auto entity, const EntityPositionInterpolation& interpolation, Transform& ts) {
auto [from, to, value] = interpolation.get_values_around(time_point);
spdlog::info("From: {} {} {} - To: {} {} {} - By: {}",
from.x, from.y, from.z,
to.x, to.y, to.z,
value);
ts.set_position(glm::mix(from, to, value));
});
}