public void OnTimer(double tickDuration) { if (!Monitor.TryEnter(m_frames)) { return; } if (m_timerStopped) { KeyframeTimer.Remove(this); } else { DoOnTimer(tickDuration); } Monitor.Exit(m_frames); }
private void Done() { KeyframeTimer.Remove(this); m_timerStopped = true; m_running = false; m_isCrossing = false; m_waitingCrossing = false; m_basePosition = m_group.AbsolutePosition; m_baseRotation = m_group.GroupRotation; m_group.RootPart.Velocity = Vector3.Zero; m_group.RootPart.AngularVelocity = Vector3.Zero; m_group.SendGroupRootTerseUpdate(); // m_group.RootPart.ScheduleTerseUpdate(); m_frames.Clear(); }
private void StopTimer() { m_timerStopped = true; KeyframeTimer.Remove(this); }