diff --git a/src/assets.html b/src/assets.html
index 9371dbe..d12729c 100644
--- a/src/assets.html
+++ b/src/assets.html
@@ -60,8 +60,6 @@
-
-
+>
+
+
{
- if (!evt.detail || !evt.detail.el.classList.contains('saber') ||
- evt.detail.el === el) { return; }
+ el.addEventListener('mouseenter', evt => {
+ if (!evt.detail || !evt.detail.intersectedEl) { return; }
+
+ const intersectedEl = evt.detail.intersectedEl;
+ if (!intersectedEl.classList.contains('blade') || intersectedEl === el) { return; }
+
this.el.components.haptics__saber.pulse();
});
}
diff --git a/src/components/haptics-wall.js b/src/components/haptics-wall.js
index f1e8495..1cb7fbd 100644
--- a/src/components/haptics-wall.js
+++ b/src/components/haptics-wall.js
@@ -2,16 +2,14 @@
* Listen to aabb-collider event for wall haptics.
*/
AFRAME.registerComponent('haptics-wall', {
- dependencies: ['aabb-collider'],
-
init: function () {
const el = this.el;
this.isHittingWall = false;
el.setAttribute('haptics__wall', {dur: 50, force: 0.025});
this.checkIfHittingWall = this.checkIfHittingWall.bind(this);
- el.addEventListener('hitstart', this.checkIfHittingWall);
- el.addEventListener('hitend', this.checkIfHittingWall);
+ el.addEventListener('mouseenter', this.checkIfHittingWall);
+ el.addEventListener('mouseleave', this.checkIfHittingWall);
this.tick = AFRAME.utils.throttleTick(this.tick.bind(this), 50);
},
@@ -20,7 +18,7 @@ AFRAME.registerComponent('haptics-wall', {
* On aabb-collider event, check if we are still hitting a wall.
*/
checkIfHittingWall: function () {
- const intersectedEls = this.el.components['aabb-collider'].intersectedEls;
+ const intersectedEls = this.el.components.raycaster__game.intersectedEls;
this.isHittingWall = false;
for (let i = 0; i < intersectedEls.length; i++) {
if (intersectedEls[i].components.wall) {
diff --git a/src/components/raycastable.js b/src/components/raycastable.js
deleted file mode 100644
index 919b7f2..0000000
--- a/src/components/raycastable.js
+++ /dev/null
@@ -1 +0,0 @@
-AFRAME.registerComponent('raycastable', {});
diff --git a/src/components/wall.js b/src/components/wall.js
index 3092dd3..b7f7bc4 100644
--- a/src/components/wall.js
+++ b/src/components/wall.js
@@ -13,13 +13,13 @@ AFRAME.registerComponent('wall', {
pause: function () {
this.el.object3D.visible = false;
this.el.removeAttribute('data-collidable-head');
- this.el.removeAttribute('data-collidable-saber');
+ this.el.removeAttribute('raycastable-game');
},
play: function () {
this.el.object3D.visible = true;
this.el.setAttribute('data-collidable-head', '');
- this.el.setAttribute('data-collidable-saber', '');
+ this.el.setAttribute('raycastable-game', '');
},
tock: function (time, delta) {
@@ -35,6 +35,6 @@ AFRAME.registerComponent('wall', {
this.el.object3D.position.z = 9999;
this.el.pause();
this.el.removeAttribute('data-collidable-head');
- this.el.removeAttribute('data-collidable-saber');
+ this.el.removeAttribute('raycastable-game');
}
});
diff --git a/src/index.html b/src/index.html
index 14dd89f..7456013 100644
--- a/src/index.html
+++ b/src/index.html
@@ -86,10 +86,6 @@
particleplayer="src: #mineParticlesJSON; pscale: 0.5; scale: 1.4; loop: false; on: explode; img: #sparkImg; count: 20%; animateScale: true; initialScale: 3 1 1; finalScale: 0.2 0.2 1">
-
@@ -138,14 +138,10 @@
animation="property: scale; from: 0 0 0; to: 1 1 1; dur: 750; easing: linear; startEvents: drawblade"
scale="0.001 0.001 0.001">
{% endmacro %}
@@ -195,8 +191,12 @@
material="shader: flat; src: #stepbackImg; transparent: true; opacity: 0">
{% if not IS_PRODUCTION %}
-
+
{% endif %}