Skip to content

Commit 46685c6

Browse files
authored
Merge pull request #124 from vidartf/fix-trackball
Fix trackball controls
2 parents ba53d44 + 970a3c4 commit 46685c6

File tree

2 files changed

+28
-21
lines changed

2 files changed

+28
-21
lines changed

js/src/controls/TrackballControls.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var TrackballControlsModel = TrackballControlsAutogen.TrackballControlsModel.ext
66

77
constructThreeObject: function() {
88
var controlling = this.get('controlling');
9-
obj = new TrackballControls(controlling);
9+
obj = new TrackballControls(controlling.obj);
1010
obj.dispose(); // Disconnect events, we need to (dis-)connect on freeze/thaw
1111
obj.noKeys = true; // turn off keyboard navigation
1212

js/src/examples/controls/TrackballControls.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -361,40 +361,43 @@ var TrackballControls = function ( object, domElement ) {
361361

362362
this.connectEvents = function(element) {
363363
if (element) {
364-
this.domElement = element;
364+
_this.domElement = element;
365365
}
366-
this.domElement.addEventListener( 'contextmenu', contextmenu, false );
366+
_this.domElement.addEventListener( 'contextmenu', contextmenu, false );
367367

368-
this.domElement.addEventListener( 'mousedown', mousedown, false );
368+
_this.domElement.addEventListener( 'mousedown', mousedown, false );
369369

370-
this.domElement.addEventListener( 'mousewheel', mousewheel, false );
371-
this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
370+
_this.domElement.addEventListener( 'mousewheel', mousewheel, false );
371+
_this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
372372

373-
this.domElement.addEventListener( 'touchstart', touchstart, false );
374-
this.domElement.addEventListener( 'touchend', touchend, false );
375-
this.domElement.addEventListener( 'touchmove', touchmove, false );
373+
_this.domElement.addEventListener( 'touchstart', touchstart, false );
374+
_this.domElement.addEventListener( 'touchend', touchend, false );
375+
_this.domElement.addEventListener( 'touchmove', touchmove, false );
376376

377-
window.addEventListener( 'keydown', keydown, false );
378-
window.addEventListener( 'keyup', keyup, false );
377+
_this.domElement.addEventListener( 'keydown', keydown, false );
378+
_this.domElement.addEventListener( 'keyup', keyup, false );
379379
}
380380

381381
this.dispose = function() {
382382

383-
scope.domElement.removeEventListener( 'contextmenu', contextmenu, false );
383+
_this.domElement.removeEventListener( 'contextmenu', contextmenu, false );
384+
385+
_this.domElement.removeEventListener( 'mousedown', mousedown, false );
384386

385-
scope.domElement.removeEventListener( 'mousedown', mousedown, false );
387+
_this.domElement.removeEventListener( 'mousewheel', mousewheel, false );
388+
_this.domElement.removeEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
386389

387-
scope.domElement.removeEventListener( 'mousewheel', mousewheel, false );
388-
scope.domElement.removeEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox
390+
_this.domElement.removeEventListener( 'touchstart', touchstart, false );
391+
_this.domElement.removeEventListener( 'touchend', touchend, false );
392+
_this.domElement.removeEventListener( 'touchmove', touchmove, false );
389393

390-
scope.domElement.removeEventListener( 'touchstart', touchstart, false );
391-
scope.domElement.removeEventListener( 'touchend', touchend, false );
392-
scope.domElement.removeEventListener( 'touchmove', touchmove, false );
394+
document.removeEventListener( 'mousemove', mousemove, false );
395+
document.removeEventListener( 'mouseup', mouseup, false );
393396

394-
window.removeEventListener( 'keydown', keydown, false );
395-
window.removeEventListener( 'keyup', keyup, false );
397+
_this.domElement.removeEventListener( 'keydown', keydown, false );
398+
_this.domElement.removeEventListener( 'keyup', keyup, false );
396399

397-
//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
400+
//_this.dispatchEvent( { type: 'dispose' } ); // should this be added here?
398401

399402
};
400403

@@ -500,6 +503,8 @@ var TrackballControls = function ( object, domElement ) {
500503

501504
}
502505

506+
_this.update();
507+
503508
}
504509

505510
function mouseup( event ) {
@@ -509,6 +514,8 @@ var TrackballControls = function ( object, domElement ) {
509514
event.preventDefault();
510515
event.stopPropagation();
511516

517+
_this.update();
518+
512519
_state = STATE.NONE;
513520

514521
document.removeEventListener( 'mousemove', mousemove );

0 commit comments

Comments
 (0)