コード例 #1
0
ファイル: RangeTrigger.cs プロジェクト: Belial2010/Leap
        private void OnStateValueChanged(object sender, HandStateChangedEventArgs <int> e)
        {
            var newValue = e.NewValue;

            if (IsTriggered)
            {
                // If outside the actual range, switch immediately
                if (newValue < MinValue || newValue > MaxValue)
                {
                    LastChangeTime = 0;
                    IsTriggered    = false;
                }
                else if (newValue < (MinValue - Stickiness) || newValue > (MaxValue + Stickiness))
                {
                    // first time outside relaxed range, start time
                    if (LastChangeTime == 0)
                    {
                        LastChangeTime = e.CurrentTime;
                    }
                    // if outside relaxed range long enough, switch
                    else if (e.CurrentTime - LastChangeTime > ResistanceTime)
                    {
                        LastChangeTime = 0;
                        IsTriggered    = false;
                    }
                }
            }
            else
            {
                // If inside the actual range, switch immediately
                if (newValue >= MinValue && newValue <= MaxValue)
                {
                    LastChangeTime = 0;
                    IsTriggered    = true;
                }
                else if (newValue >= (MinValue + Resistance) && newValue <= (MaxValue - Resistance))
                {
                    // first time inside relaxed range, start time
                    if (LastChangeTime == 0)
                    {
                        LastChangeTime = e.CurrentTime;
                    }
                    // if inside relaxed range long enough, switch
                    else if (e.CurrentTime - LastChangeTime > ResistanceTime)
                    {
                        LastChangeTime = 0;
                        IsTriggered    = true;
                    }
                }
                // Moved outside relaxed range, reset timer
                else
                {
                    LastChangeTime = 0;
                }
            }
        }
コード例 #2
0
ファイル: RangeTrigger.cs プロジェクト: RossDay/Leap
 private void OnStateValueChanged(object sender, HandStateChangedEventArgs<int> e)
 {
     var newValue = e.NewValue;
     if (IsTriggered)
     {
         // If outside the actual range, switch immediately
         if (newValue < MinValue || newValue > MaxValue)
         {
             LastChangeTime = 0;
             IsTriggered = false;
         }
         else if (newValue < (MinValue - Stickiness) || newValue > (MaxValue + Stickiness))
         {
             // first time outside relaxed range, start time
             if (LastChangeTime == 0)
                 LastChangeTime = e.CurrentTime;
             // if outside relaxed range long enough, switch
             else if (e.CurrentTime - LastChangeTime > ResistanceTime)
             {
                 LastChangeTime = 0;
                 IsTriggered = false;
             }
         }
     }
     else
     {
         // If inside the actual range, switch immediately
         if (newValue >= MinValue && newValue <= MaxValue)
         {
             LastChangeTime = 0;
             IsTriggered = true;
         }
         else if (newValue >= (MinValue + Resistance) && newValue <= (MaxValue - Resistance))
         {
             // first time inside relaxed range, start time
             if (LastChangeTime == 0)
                 LastChangeTime = e.CurrentTime;
             // if inside relaxed range long enough, switch
             else if (e.CurrentTime - LastChangeTime > ResistanceTime)
             {
                 LastChangeTime = 0;
                 IsTriggered = true;
             }
         }
         // Moved outside relaxed range, reset timer
         else
         {
             LastChangeTime = 0;
         }
     }
 }