115 lines
3.0 KiB
JavaScript
115 lines
3.0 KiB
JavaScript
|
if (!this.entityLoaded) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var camera = GameLib.EntityManager.Instance.findComponentById('zc2pq229fq');
|
||
|
camera.lookAt.x = (-1 * (window.innerWidth / 2 - data.event.x)) * 0.025;//(window.clientWidth/ 2) + data.event.x;
|
||
|
camera.lookAt.y = (((window.innerHeight / 2 - data.event.y)) * 0.05);
|
||
|
camera.updateInstance();
|
||
|
|
||
|
var cursorCamera = GameLib.EntityManager.Instance.findComponentById('6tr9gzu4oh');
|
||
|
|
||
|
var mousePosition = new THREE.Vector3(
|
||
|
(-1 * (window.innerWidth / 2 - data.event.x)) ,
|
||
|
(window.innerHeight / 2 - data.event.y) * 1.66667,
|
||
|
0
|
||
|
);
|
||
|
|
||
|
mousePosition.unproject(cursorCamera.instance);
|
||
|
|
||
|
var cursor = GameLib.EntityManager.Instance.findComponentById('jl8hpa2pel');
|
||
|
cursor.position.x = mousePosition.x;
|
||
|
cursor.position.y = mousePosition.y;
|
||
|
//cursor.position.x = (-1 * (window.innerWidth / 2 - data.event.x)) * 0.025;
|
||
|
//cursor.position.y = (((window.innerHeight / 2 - data.event.y)) * 0.05);
|
||
|
cursor.updateInstance();
|
||
|
|
||
|
var thrower = GameLib.EntityManager.Instance.findComponentById('y548ddx1ff');
|
||
|
|
||
|
thrower.instance.lookAt(
|
||
|
new THREE.Vector3(
|
||
|
cursor.position.x,
|
||
|
cursor.position.y,
|
||
|
cursor.position.z
|
||
|
)
|
||
|
);
|
||
|
|
||
|
//thrower.rotation.x = 0.5 + cursor.position.y * 0.12;
|
||
|
//thrower.rotation.y = Math.PI + (cursor.position.x * -0.1);
|
||
|
//thrower.updateInstance();
|
||
|
|
||
|
/**
|
||
|
* First we find our crosshair
|
||
|
*/
|
||
|
//var crosshair = GameLib.EntityManager.Instance.findComponentById('oxpg88pgzv');
|
||
|
var sphere = GameLib.EntityManager.Instance.findComponentById('uhfavijs0s');
|
||
|
|
||
|
/**
|
||
|
* Target, is the x / y postion of the crosshair on the z=0 plane in the crosshair scene
|
||
|
*/
|
||
|
var target = new THREE.Vector3(
|
||
|
(-1 * (window.innerWidth / 2 - data.event.x)) ,
|
||
|
(window.innerHeight / 2 - data.event.y) ,
|
||
|
0
|
||
|
);
|
||
|
|
||
|
sphere.instance.position.copy(target);//instance.applyMatrix4( mInverse );
|
||
|
sphere.position.x = sphere.instance.position.x;
|
||
|
sphere.position.y = sphere.instance.position.y;
|
||
|
sphere.position.z = sphere.instance.position.z;
|
||
|
|
||
|
/**
|
||
|
* Now we get the position of the crosshair, in our world scene space
|
||
|
*/
|
||
|
target.unproject(camera.instance);
|
||
|
|
||
|
/**
|
||
|
* We want to shoot in the other direction
|
||
|
*/
|
||
|
target.normalize();
|
||
|
|
||
|
target.z *= -1;
|
||
|
|
||
|
|
||
|
//target.sub(thrower.position.instance).normalize();
|
||
|
|
||
|
var raycaster = new THREE.Raycaster();
|
||
|
|
||
|
raycaster.ray = new THREE.Ray(
|
||
|
cursor.position.instance,
|
||
|
target.instance
|
||
|
);
|
||
|
|
||
|
var intersects = raycaster.intersectObjects(
|
||
|
GameLib.EntityManager.Instance.queryComponents(GameLib.D3.Mesh).map(
|
||
|
function(mesh){
|
||
|
//mesh.instance.visible = true;
|
||
|
mesh.instance.material.color.setHex(0xffffff);
|
||
|
return mesh.instance;
|
||
|
}
|
||
|
)
|
||
|
);
|
||
|
|
||
|
if (intersects.length > 0) {
|
||
|
console.log('intersected');
|
||
|
intersects.map(
|
||
|
function(intersect){
|
||
|
intersect.object.material.color.setHex(0xff0000);
|
||
|
}
|
||
|
)
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* But we also, want the direction from the thrower to the crosshair
|
||
|
*/
|
||
|
//
|
||
|
|
||
|
|
||
|
/**
|
||
|
* We need the x/y/z position of an imaginary object, at target position, in the game scene
|
||
|
*/
|
||
|
//var mInverse = new THREE.Matrix4().getInverse( crosshair.instance.matrixWorld );
|
||
|
|
||
|
|
||
|
|
||
|
//@ sourceURL=mouseMove.js
|