awacke1 commited on
Commit
4fe69fa
·
verified ·
1 Parent(s): 5ae1570

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +37 -2
index.html CHANGED
@@ -62,13 +62,48 @@
62
  }
63
  }
64
 
65
- // Interaction code (onMouseMove, onMouseDown, onMouseUp) remains the same
66
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  function animate() {
68
  requestAnimationFrame(animate);
69
  renderer.render(scene, camera);
70
  }
71
  animate();
 
72
  </script>
73
  </head>
74
  <body>
 
62
  }
63
  }
64
 
65
+ var raycaster = new THREE.Raycaster();
66
+ var mouse = new THREE.Vector2();
67
+ var selectedCard = null;
68
+ var offset = new THREE.Vector3();
69
+ function onMouseMove(event) {
70
+ mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
71
+ mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
72
+ if (selectedCard) {
73
+ raycaster.setFromCamera(mouse, camera);
74
+ var intersects = raycaster.intersectObject(table, true);
75
+ if (intersects.length > 0) {
76
+ var intersect = intersects[0];
77
+ selectedCard.position.copy(intersect.point.add(offset));
78
+ }
79
+ }
80
+ }
81
+ function onMouseDown(event) {
82
+ mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
83
+ mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
84
+ raycaster.setFromCamera(mouse, camera);
85
+ var intersects = raycaster.intersectObjects(cards, true);
86
+ if (intersects.length > 0) {
87
+ selectedCard = intersects[0].object;
88
+ var intersects = raycaster.intersectObject(table, true);
89
+ if (intersects.length > 0) {
90
+ var intersect = intersects[0];
91
+ offset.subVectors(selectedCard.position, intersect.point);
92
+ }
93
+ }
94
+ }
95
+ function onMouseUp(event) {
96
+ selectedCard = null;
97
+ }
98
+ window.addEventListener('mousemove', onMouseMove, false);
99
+ window.addEventListener('mousedown', onMouseDown, false);
100
+ window.addEventListener('mouseup', onMouseUp, false);
101
  function animate() {
102
  requestAnimationFrame(animate);
103
  renderer.render(scene, camera);
104
  }
105
  animate();
106
+
107
  </script>
108
  </head>
109
  <body>