Skip to content

Commit 35d41fb

Browse files
committed
Added mouse click event.
1 parent 27e8f32 commit 35d41fb

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

utils/ObjectSelection.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
99
Parameters:
1010
domElement: HTMLDomElement
11-
selected: callback function, passes the current selected object
11+
selected: callback function, passes the current selected object (on mouseover)
12+
clicked: callback function, passes the current clicked object
1213
*/
1314

1415
THREE.ObjectSelection = function(parameters) {
@@ -18,7 +19,10 @@ THREE.ObjectSelection = function(parameters) {
1819
this.projector = new THREE.Projector;
1920
this.INTERSECTED;
2021

22+
var _this = this;
23+
2124
var callbackSelected = parameters.selected;
25+
var callbackClicked = parameters.clicked;
2226
var mouse = { x: 0, y: 0 };
2327

2428
this.domElement.addEventListener( 'mousemove', onDocumentMouseMove, false );
@@ -27,6 +31,15 @@ THREE.ObjectSelection = function(parameters) {
2731
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
2832
}
2933

34+
this.domElement.addEventListener( 'click', onDocumentMouseClick, false );
35+
function onDocumentMouseClick( event ) {
36+
if(_this.INTERSECTED) {
37+
if(typeof callbackClicked === 'function') {
38+
callbackClicked(_this.INTERSECTED);
39+
}
40+
}
41+
}
42+
3043
this.render = function(scene, camera) {
3144
// find intersections
3245
camera.update();
@@ -46,14 +59,18 @@ THREE.ObjectSelection = function(parameters) {
4659
this.INTERSECTED = intersects[ 0 ].object;
4760
this.INTERSECTED.currentHex = this.INTERSECTED.materials[ 0 ].color.getHex();
4861
this.INTERSECTED.materials[ 0 ].color.setHex( 0xff0000 );
49-
callbackSelected(this.INTERSECTED);
62+
if(typeof callbackSelected === 'function') {
63+
callbackSelected(this.INTERSECTED);
64+
}
5065
}
5166
} else {
5267
if ( this.INTERSECTED ) {
5368
this.INTERSECTED.materials[ 0 ].color.setHex( this.INTERSECTED.currentHex );
5469
}
5570
this.INTERSECTED = null;
56-
callbackSelected(this.INTERSECTED);
71+
if(typeof callbackSelected === 'function') {
72+
callbackSelected(this.INTERSECTED);
73+
}
5774
}
5875
}
5976
}

0 commit comments

Comments
 (0)