From bbea47911cc2e5161f78d8b09f2adf04eb8458f1 Mon Sep 17 00:00:00 2001 From: Kevin Ngo Date: Tue, 23 Oct 2018 06:26:42 -0700 Subject: [PATCH] haptics on saber collide --- package-lock.json | 6 +++--- package.json | 2 +- src/components/haptics-saber.js | 17 +++++++++++++++++ .../{wall-haptics.js => haptics-wall.js} | 2 +- src/index.html | 7 +++++-- 5 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 src/components/haptics-saber.js rename src/components/{wall-haptics.js => haptics-wall.js} (95%) diff --git a/package-lock.json b/package-lock.json index 2439051..5c15e74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,9 +92,9 @@ } }, "aframe-aabb-collider-component": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aframe-aabb-collider-component/-/aframe-aabb-collider-component-3.0.0.tgz", - "integrity": "sha512-xWkE5S8+pET9IYOS95KV8ChrIIJxg3dCpiXS4j7SOKn0Yn3UZ5HHbI8mvQYtq95xuxi7kHD7kjloGrJ89FEQVg==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aframe-aabb-collider-component/-/aframe-aabb-collider-component-3.1.0.tgz", + "integrity": "sha512-aJ8EhBf2VLyGV/wi84Hkxf8RGQyij1pMtvy/536LLvbO3Y1JVHkP1Yk/FWOizhqJJ73IPo+dSDICz+tw/uYzng==" }, "aframe-atlas-uvs-component": { "version": "2.1.0", diff --git a/package.json b/package.json index 3dae9f9..1f727e3 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "start": "webpack-dev-server --host 0.0.0.0 --progress --colors --hot --inline --port 3000" }, "dependencies": { - "aframe-aabb-collider-component": "^3.0.0", + "aframe-aabb-collider-component": "^3.1.0", "aframe-atlas-uvs-component": "^2.1.0", "aframe-audioanalyser-component": "^5.2.1", "aframe-event-decorators": "^1.0.2", diff --git a/src/components/haptics-saber.js b/src/components/haptics-saber.js new file mode 100644 index 0000000..0d0fe4c --- /dev/null +++ b/src/components/haptics-saber.js @@ -0,0 +1,17 @@ +/** + * Haptics when sabers collide. + */ +AFRAME.registerComponent('haptics-saber', { + dependencies: ['aabb-collider'], + + init: function () { + const el = this.el; + el.setAttribute('haptics__saber', {dur: 100, force: 0.025}); + + el.addEventListener('hitclosest', evt => { + if (!evt.detail || !evt.detail.el.classList.contains('saber') || + evt.detail.el === el) { return; } + this.el.components.haptics__saber.pulse(); + }); + } +}); diff --git a/src/components/wall-haptics.js b/src/components/haptics-wall.js similarity index 95% rename from src/components/wall-haptics.js rename to src/components/haptics-wall.js index 7696fdc..f1e8495 100644 --- a/src/components/wall-haptics.js +++ b/src/components/haptics-wall.js @@ -1,7 +1,7 @@ /** * Listen to aabb-collider event for wall haptics. */ -AFRAME.registerComponent('wall-haptics', { +AFRAME.registerComponent('haptics-wall', { dependencies: ['aabb-collider'], init: function () { diff --git a/src/index.html b/src/index.html index 0121217..0dd5c69 100644 --- a/src/index.html +++ b/src/index.html @@ -102,6 +102,7 @@ {% macro saber (hand, otherHand, bladeColor, beamColor) %} + trail="color: {{ bladeColor }}; hand: {{ hand }}">