if (!this.entityLoaded) { return; } var camera = R3.EntityManager.Instance.findComponentById('r38gjp0opa'); 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 = R3.EntityManager.Instance.findComponentById('ajtzsvtt8o'); 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 = R3.EntityManager.Instance.findComponentById('aj7cby3brc'); 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 = R3.EntityManager.Instance.findComponentById('32a4ii2ixu'); 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 = R3.EntityManager.Instance.findComponentById('oxpg88pgzv'); var sphere = R3.EntityManager.Instance.findComponentById('pxgrrbj2mz'); /** * 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( R3.EntityManager.Instance.queryComponents(R3.D3.Mesh).map( function(mesh){ if (mesh.instance.material instanceof Array) { mesh.instance.material.map( function(material) { material.color.setHex(0xffffff); } ); } else { mesh.instance.material.color.setHex(0xffffff); } return mesh.instance; } ) ); if (intersects.length > 0) { console.log('intersected'); intersects.map( function(intersect){ if (mesh.instance.material instanceof Array) { mesh.instance.material.map( function(material) { material.color.setHex(0xff0000); } ); } else { mesh.instance.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