aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorMelanie2012-06-08 15:14:38 +0200
committerMelanie2012-06-08 15:14:38 +0200
commit2d98d6354ce04b655e8d9062a209f5af1565c78c (patch)
tree47095c7d54a597586f640af1b8bdbb5f1531afee /OpenSim/Region/Framework
parentfix the real cause of double velocity (diff)
downloadopensim-SC_OLD-2d98d6354ce04b655e8d9062a209f5af1565c78c.zip
opensim-SC_OLD-2d98d6354ce04b655e8d9062a209f5af1565c78c.tar.gz
opensim-SC_OLD-2d98d6354ce04b655e8d9062a209f5af1565c78c.tar.bz2
opensim-SC_OLD-2d98d6354ce04b655e8d9062a209f5af1565c78c.tar.xz
Add a frame based watchdog function to keyframed motion
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/KeyframeMotion.cs20
1 files changed, 20 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs
index b7b0d27..0219d9c 100644
--- a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs
+++ b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs
@@ -64,6 +64,10 @@ namespace OpenSim.Region.Framework.Scenes
64 64
65 [NonSerialized()] 65 [NonSerialized()]
66 protected Timer m_timer = new Timer(); 66 protected Timer m_timer = new Timer();
67 [NonSerialized()]
68 protected bool m_frameHooked;
69 [NonSerialized()]
70 protected int frameCount = 0;
67 71
68 [NonSerialized()] 72 [NonSerialized()]
69 private SceneObjectGroup m_group; 73 private SceneObjectGroup m_group;
@@ -162,6 +166,22 @@ namespace OpenSim.Region.Framework.Scenes
162 if (m_keyframes.Length > 0) 166 if (m_keyframes.Length > 0)
163 m_timer.Start(); 167 m_timer.Start();
164 m_running = true; 168 m_running = true;
169 if (!m_frameHooked)
170 {
171 m_group.Scene.EventManager.OnFrame += OnFrame;
172 m_frameHooked = true;
173 }
174 }
175
176 private void OnFrame()
177 {
178 frameCount++;
179 if (frameCount >= 30)
180 {
181 frameCount = 0;
182 if (m_running)
183 Start();
184 }
165 } 185 }
166 186
167 public void Stop() 187 public void Stop()