@@ -41,40 +41,46 @@ export function setupParallax( canvas ) {
4141
4242export function setupFocus ( canvas , camera , planets , basePosition ) {
4343
44- const state = {
44+ const focus = {
4545 raycaster : new THREE . Raycaster ( ) ,
4646 pointer : new THREE . Vector2 ( ) ,
4747 paused : false ,
4848 focusedPlanet : null ,
4949 cameraTarget : null ,
5050 lookAtTarget : null ,
5151 tweening : false ,
52+ popupFired : false ,
5253 } ;
5354
5455 canvas . addEventListener ( 'click' , e => {
5556 const rect = canvas . getBoundingClientRect ( ) ;
56- state . pointer . x = ( ( e . clientX - rect . left ) / rect . width ) * 2 - 1 ;
57- state . pointer . y = - ( ( e . clientY - rect . top ) / rect . height ) * 2 + 1 ;
58- state . raycaster . setFromCamera ( state . pointer , camera ) ;
57+ focus . pointer . x = ( ( e . clientX - rect . left ) / rect . width ) * 2 - 1 ;
58+ focus . pointer . y = - ( ( e . clientY - rect . top ) / rect . height ) * 2 + 1 ;
59+ focus . raycaster . setFromCamera ( focus . pointer , camera ) ;
5960
6061 const meshes = planets . map ( p => p . mesh ) ;
61- const hits = state . raycaster . intersectObjects ( meshes ) ;
62+ const hits = focus . raycaster . intersectObjects ( meshes ) ;
6263
6364 if ( hits . length > 0 ) {
64- state . focusedPlanet = planets . find ( p => p . mesh === hits [ 0 ] . object ) ;
65- state . paused = true ;
66- state . tweening = true ;
65+ focus . focusedPlanet = planets . find ( p => p . mesh === hits [ 0 ] . object ) ;
66+ focus . paused = true ;
67+ focus . tweening = true ;
68+ focus . popupFired = false ;
6769 }
6870 else {
69- state . focusedPlanet = null ;
70- state . paused = false ;
71- state . tweening = true ;
72- state . cameraTarget = basePosition . clone ( ) ;
73- state . lookAtTarget = new THREE . Vector3 ( 0 , 0 , 0 ) ;
71+ zoomOut ( ) ;
7472 }
7573 } ) ;
7674
77- return state ;
75+ function zoomOut ( ) {
76+ focus . focusedPlanet = null ;
77+ focus . paused = false ;
78+ focus . tweening = true ;
79+ focus . cameraTarget = basePosition . clone ( ) ;
80+ focus . lookAtTarget = new THREE . Vector3 ( 0 , 0 , 0 ) ;
81+ }
82+
83+ return { focus, zoomOut } ;
7884
7985}
8086
0 commit comments