From bf403b923ab4a1e11447b3f81d54d5d0c1124f65 Mon Sep 17 00:00:00 2001 From: sapier Date: Fri, 1 Sep 2017 11:15:12 +0200 Subject: =?UTF-8?q?Fix=20animation=20frame=5Fspeed=20and=20blend=20loosing?= =?UTF-8?q?=20precision=20due=20to=20incorrec=E2=80=A6=20(#6357)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix animation frame_speed and blend loosing precision due to incorrect data type Add lua function set_animation_frame_speed to update the frame speed without resetting the animation to start --- src/content_cao.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/content_cao.cpp') diff --git a/src/content_cao.cpp b/src/content_cao.cpp index 42f4e22a6..7659871b6 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -1150,9 +1150,17 @@ void GenericCAO::updateAnimation() #endif } +void GenericCAO::updateAnimationSpeed() +{ + if (!m_animated_meshnode) + return; + + m_animated_meshnode->setAnimationSpeed(m_animation_speed); +} + void GenericCAO::updateBonePosition() { - if(m_bone_position.empty() || !m_animated_meshnode) + if (m_bone_position.empty() || !m_animated_meshnode) return; m_animated_meshnode->setJointMode(irr::scene::EJUOR_CONTROL); // To write positions to the mesh on render @@ -1351,6 +1359,9 @@ void GenericCAO::processMessage(const std::string &data) updateAnimation(); } } + } else if (cmd == GENERIC_CMD_SET_ANIMATION_SPEED) { + m_animation_speed = readF1000(is); + updateAnimationSpeed(); } else if (cmd == GENERIC_CMD_SET_BONE_POSITION) { std::string bone = deSerializeString(is); v3f position = readV3F1000(is); -- cgit v1.2.3