Skip to content

Commit b871d35

Browse files
authored
Enable touch for css3d_mixed example (#31979)
* Enabled touch for css3d_mixed example * Removed isDragging
1 parent 11b9f41 commit b871d35

File tree

1 file changed

+12
-38
lines changed

1 file changed

+12
-38
lines changed

examples/css3d_mixed.html

Lines changed: 12 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,21 @@
3535

3636
function init() {
3737

38+
const controlsDomElement = document.createElement( 'div' );
39+
controlsDomElement.style.position = 'absolute';
40+
controlsDomElement.style.top = '0';
41+
controlsDomElement.style.width = '100%';
42+
controlsDomElement.style.height = '100%';
43+
document.body.appendChild( controlsDomElement );
44+
3845
rendererCSS3D = new CSS3DRenderer();
3946
rendererCSS3D.setSize( window.innerWidth, window.innerHeight );
4047
document.body.appendChild( rendererCSS3D.domElement );
4148

4249
rendererWebGL = new THREE.WebGLRenderer( { antialias: true, alpha: true } );
4350
rendererWebGL.domElement.style.position = 'absolute';
4451
rendererWebGL.domElement.style.top = '0';
52+
rendererWebGL.domElement.style.pointerEvents = 'none';
4553
rendererWebGL.setPixelRatio( window.devicePixelRatio );
4654
rendererWebGL.setSize( window.innerWidth, window.innerHeight );
4755
rendererWebGL.toneMapping = THREE.NeutralToneMapping;
@@ -74,7 +82,6 @@
7482
premultipliedAlpha: true
7583
} );
7684
const mesh = new THREE.Mesh( geometry, material );
77-
mesh.name = 'cutout';
7885
scene.add( mesh );
7986

8087
// Add frame
@@ -86,50 +93,17 @@
8693
iframe.style.width = '1028px';
8794
iframe.style.height = '768px';
8895
iframe.style.border = '0px';
96+
iframe.style.backfaceVisibility = 'hidden';
8997
iframe.src = './#webgl_animation_keyframes';
9098
scene.add( new CSS3DObject( iframe ) );
9199

92100
// Add controls
93101
controls = new OrbitControls( camera );
94-
controls.connect( rendererWebGL.domElement );
102+
controls.connect( controlsDomElement );
103+
controls.addEventListener( 'start', () => iframe.style.pointerEvents = 'none' );
104+
controls.addEventListener( 'end', () => iframe.style.pointerEvents = 'auto' );
95105
controls.enableDamping = true;
96106

97-
// Track OrbitControls state
98-
let isDragging = false;
99-
controls.addEventListener( 'start', () => isDragging = true );
100-
controls.addEventListener( 'end', () => isDragging = false );
101-
102-
// raycast to find CSS3DObject
103-
const raycaster = new THREE.Raycaster();
104-
const pointer = new THREE.Vector2();
105-
document.addEventListener( 'pointermove', ( event ) => {
106-
107-
// Skip raycasting when dragging
108-
if ( isDragging ) return;
109-
110-
pointer.x = ( event.clientX / window.innerWidth ) * 2 - 1;
111-
pointer.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
112-
113-
raycaster.setFromCamera( pointer, camera );
114-
115-
const intersects = raycaster.intersectObjects( scene.children, true );
116-
117-
rendererWebGL.domElement.style.pointerEvents = '';
118-
119-
if ( intersects.length > 0 ) {
120-
121-
const object = intersects[ 0 ].object;
122-
123-
if ( object.name === 'cutout' ) {
124-
125-
rendererWebGL.domElement.style.pointerEvents = 'none';
126-
127-
}
128-
129-
}
130-
131-
} );
132-
133107
window.addEventListener( 'resize', onWindowResize );
134108

135109
}

0 commit comments

Comments
 (0)