diff --git a/games/devtest/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua index 26b538e7f..fe611edd2 100644 --- a/games/devtest/mods/testentities/visuals.lua +++ b/games/devtest/mods/testentities/visuals.lua @@ -85,6 +85,28 @@ core.register_entity("testentities:sam", { }, on_activate = function(self) self.object:set_animation({x = 0, y = 219}, 30, 0, true) + self._timer = 0 + self._grow_head = true + self:_animate_head() + end, + _head_anim_duration = 2, + _animate_head = function(self) + local s = self._grow_head and 2 or 1 + self.object:set_bone_override("Head", { + scale = { + vec = vector.new(s, s, s), + absolute = true, + interpolation = self._head_anim_duration, + }, + }) + end, + on_step = function(self, dtime) + self._timer = self._timer + dtime + if self._timer >= self._head_anim_duration then + self._timer = 0 + self._grow_head = not self._grow_head + self:_animate_head() + end end, }) diff --git a/irr/src/CAnimatedMeshSceneNode.cpp b/irr/src/CAnimatedMeshSceneNode.cpp index 7808f1fee..a32706a44 100644 --- a/irr/src/CAnimatedMeshSceneNode.cpp +++ b/irr/src/CAnimatedMeshSceneNode.cpp @@ -171,7 +171,8 @@ void CAnimatedMeshSceneNode::OnAnimate(u32 timeMs) } // set CurrentFrameNr - buildFrameNr(timeMs - LastTimeMs); + const u32 dtimeMs = timeMs - LastTimeMs; + buildFrameNr(dtimeMs); LastTimeMs = timeMs; // This needs to be done on animate, which is called recursively *before* @@ -183,7 +184,7 @@ void CAnimatedMeshSceneNode::OnAnimate(u32 timeMs) copyOldTransforms(); if (OnAnimateCallback) - OnAnimateCallback(timeMs / 1000.0f); + OnAnimateCallback(dtimeMs / 1000.0f); IAnimatedMeshSceneNode::OnAnimate(timeMs);