in app/scripts/views/mainPage/view3d.js [659:720]
onDocumentMouseMove: function (event) {
var config = this.eventConfig;
var offset = this.get('offset');
var camera = this.get('camera');
var plane = this.get('nodeMoveHelperPlane');
var vector = this.getMouseVector(event, config).unproject(camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var dragNode = this.get('dragNode');
if (dragNode !== null && dragNode !== undefined) {
var intersectsWithPlane = raycaster.intersectObject(plane);
dragNode.position.copy(intersectsWithPlane[0].point.sub(offset));
var lineData = this.nodeLines[dragNode.name];
if (Ember.isArray(lineData)) {
lineData.forEach(function (lineData) {
lineData.vertex.copy(dragNode.position);
lineData.geometry.verticesNeedUpdate = true;
});
}
return;
}
var current = this.get('selectedNode');
var intersects = this.calculateIntersects(event, config);
//TODO: fix selected objects (use array to store selected objects)
if (intersects.length > 0) {
if (current !== intersects[0].object) {
current = intersects[0].object;
this.mouseOverThreeJsSceneObject(current);
//d&d
if (current.objectType === this.getNodeType()) {
plane.position.copy(current.position);
var lookAtVector = camera.position.clone();
lookAtVector.x = lookAtVector.x * 10;
lookAtVector.y = lookAtVector.y * 10;
lookAtVector.z = lookAtVector.z * 10;
plane.lookAt(lookAtVector);
}
}
} else if (current !== null) {
this.mouseLeaveThreeJsSceneObject(current);
current = null;
}
this.set('selectedNode', current);
this.get('renderer').render(this.get('scene'), this.get('camera'));
},