From f37b4e68567ba1183bcdb1f45e12df462682d7c8 Mon Sep 17 00:00:00 2001 From: Greg Fodor <gfodor@gmail.com> Date: Mon, 22 Oct 2018 03:27:53 +0000 Subject: [PATCH] Don't turn body dynamic on unpin --- src/components/pin-networked-object-button.js | 2 +- src/components/pinnable.js | 15 +++++++++++++++ src/components/pinned.js | 8 -------- src/components/sticky-object.js | 2 ++ src/components/super-networked-interactable.js | 2 ++ src/hub.html | 1 + src/hub.js | 2 +- 7 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 src/components/pinnable.js delete mode 100644 src/components/pinned.js diff --git a/src/components/pin-networked-object-button.js b/src/components/pin-networked-object-button.js index a522fbb51..51f72ac11 100644 --- a/src/components/pin-networked-object-button.js +++ b/src/components/pin-networked-object-button.js @@ -3,7 +3,7 @@ AFRAME.registerComponent("pin-networked-object-button", { this.scene = document.querySelector("a-scene"); this.onClick = () => { - this.targetEl.setAttribute("pinned", ""); + this.targetEl.setAttribute("pinnable", { pinned: true }); this.scene.emit("object_pinned", { el: this.targetEl }); }; diff --git a/src/components/pinnable.js b/src/components/pinnable.js new file mode 100644 index 000000000..f0f2e11f2 --- /dev/null +++ b/src/components/pinnable.js @@ -0,0 +1,15 @@ +AFRAME.registerComponent("pinnable", { + schema: { + pinned: { default: false } + }, + + init() {}, + + update() { + this.el.setAttribute("grabbable", { maxGrabbers: this.data.pinned ? 0 : 1 }); + + if (this.data.pinned) { + this.el.setAttribute("body", { type: "static" }); + } + } +}); diff --git a/src/components/pinned.js b/src/components/pinned.js deleted file mode 100644 index 225fd7208..000000000 --- a/src/components/pinned.js +++ /dev/null @@ -1,8 +0,0 @@ -AFRAME.registerComponent("pinned", { - init() {}, - - update() { - console.log("Disabling"); - console.log(this.el); - } -}); diff --git a/src/components/sticky-object.js b/src/components/sticky-object.js index 61d04814a..dbf57ed56 100644 --- a/src/components/sticky-object.js +++ b/src/components/sticky-object.js @@ -60,6 +60,8 @@ AFRAME.registerComponent("sticky-object", { }, _onGrab() { + if (!this.el.grabbable || this.el.grabbable.data.maxGrabbers === 0) return; + this.setLocked(false); this.el.body.collisionResponse = false; }, diff --git a/src/components/super-networked-interactable.js b/src/components/super-networked-interactable.js index 86a49e71b..f2d1b398d 100644 --- a/src/components/super-networked-interactable.js +++ b/src/components/super-networked-interactable.js @@ -51,6 +51,8 @@ AFRAME.registerComponent("super-networked-interactable", { }, _onGrabStart: function(e) { + if (!this.el.grabbable || this.el.grabbable.data.maxGrabbers === 0) return; + this.hand = e.detail.hand; this.hand.emit("haptic_pulse", { intensity: "high" }); if (this.networkedEl && !NAF.utils.isMine(this.networkedEl)) { diff --git a/src/hub.html b/src/hub.html index 74a8d6c6a..c54135cdd 100644 --- a/src/hub.html +++ b/src/hub.html @@ -150,6 +150,7 @@ position-at-box-shape-border="target:.action-buttons" destroy-at-extreme-distances set-yxz-order + pinnable > <a-entity class="action-buttons" visible-while-frozen> <a-entity mixin="rounded-text-button" pin-networked-object-button position="0 0.125 0.01"> </a-entity> diff --git a/src/hub.js b/src/hub.js index fcd1c6bdb..79ddeb10a 100644 --- a/src/hub.js +++ b/src/hub.js @@ -55,7 +55,7 @@ import "./components/pinch-to-move"; import "./components/pitch-yaw-rotator"; import "./components/auto-scale-cannon-physics-body"; import "./components/position-at-box-shape-border"; -import "./components/pinned"; +import "./components/pinnable"; import "./components/pin-networked-object-button"; import "./components/remove-networked-object-button"; import "./components/destroy-at-extreme-distances"; -- GitLab