From 2d98d6354ce04b655e8d9062a209f5af1565c78c Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 8 Jun 2012 15:14:38 +0200 Subject: [PATCH] Add a frame based watchdog function to keyframed motion --- .../Region/Framework/Scenes/KeyframeMotion.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs index b7b0d27388..0219d9ca0c 100644 --- a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs +++ b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs @@ -64,6 +64,10 @@ namespace OpenSim.Region.Framework.Scenes [NonSerialized()] protected Timer m_timer = new Timer(); + [NonSerialized()] + protected bool m_frameHooked; + [NonSerialized()] + protected int frameCount = 0; [NonSerialized()] private SceneObjectGroup m_group; @@ -162,6 +166,22 @@ namespace OpenSim.Region.Framework.Scenes if (m_keyframes.Length > 0) m_timer.Start(); m_running = true; + if (!m_frameHooked) + { + m_group.Scene.EventManager.OnFrame += OnFrame; + m_frameHooked = true; + } + } + + private void OnFrame() + { + frameCount++; + if (frameCount >= 30) + { + frameCount = 0; + if (m_running) + Start(); + } } public void Stop()