@@ -544,17 +544,35 @@ var InputPlugin = new Class({
544544 return false ;
545545 }
546546
547- // So the Gamepad and Keyboard update, regardless
547+ // The plugins should update every frame, regardless if there has been
548+ // any DOM input events or not (such as the Gamepad and Keyboard)
548549 this . pluginEvents . emit ( Events . UPDATE , time , delta ) ;
549550
550- // Nothing else? Let's leave
551- if ( this . _list . length === 0 || this . _updatedThisFrame )
551+ // We can leave now if we've already updated once this frame via the immediate DOM event handlers
552+ if ( this . _updatedThisFrame )
552553 {
553554 this . _updatedThisFrame = false ;
554555
555556 return false ;
556557 }
557558
559+ var i ;
560+ var manager = this . manager ;
561+
562+ var pointers = manager . pointers ;
563+ var pointersTotal = manager . pointersTotal ;
564+
565+ for ( i = 0 ; i < pointersTotal ; i ++ )
566+ {
567+ pointers [ i ] . updateMotion ( ) ;
568+ }
569+
570+ // No point going any further if there aren't any interactive objects
571+ if ( this . _list . length === 0 )
572+ {
573+ return false ;
574+ }
575+
558576 var rate = this . pollRate ;
559577
560578 if ( rate === - 1 )
@@ -578,15 +596,12 @@ var InputPlugin = new Class({
578596 }
579597
580598 // We got this far? Then we should poll for movement
581- var manager = this . manager ;
582-
583- var pointers = manager . pointers ;
584- var pointersTotal = manager . pointersTotal ;
585599 var captured = false ;
586600
587- for ( var i = 0 ; i < pointersTotal ; i ++ )
601+ for ( i = 0 ; i < pointersTotal ; i ++ )
588602 {
589603 var total = 0 ;
604+
590605 var pointer = pointers [ i ] ;
591606
592607 // Always reset this array
0 commit comments