예제 #1
0
 public void OnTimer(double tickDuration)
 {
     if (!Monitor.TryEnter(m_frames))
     {
         return;
     }
     if (m_timerStopped)
     {
         KeyframeTimer.Remove(this);
     }
     else
     {
         DoOnTimer(tickDuration);
     }
     Monitor.Exit(m_frames);
 }
예제 #2
0
        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();
        }
예제 #3
0
 private void StopTimer()
 {
     m_timerStopped = true;
     KeyframeTimer.Remove(this);
 }