diff --git a/src/components/destroy-at-extreme-distances.js b/src/components/destroy-at-extreme-distances.js new file mode 100644 index 0000000000000000000000000000000000000000..2660c3ce98aa227415a6a075a81692628eda417d --- /dev/null +++ b/src/components/destroy-at-extreme-distances.js @@ -0,0 +1,21 @@ +AFRAME.registerComponent("destroy-at-extreme-distances", { + schema: { + xMin: { default: -1000 }, + xMax: { default: 1000 }, + yMin: { default: -1000 }, + yMax: { default: 1000 }, + zMin: { default: -1000 }, + zMax: { default: 1000 } + }, + + tick: (function() { + const pos = new THREE.Vector3(); + return function() { + const { xMin, xMax, yMin, yMax, zMin, zMax } = this.data; + this.el.object3D.getWorldPosition(pos); + if (pos.x < xMin || pos.x > xMax || pos.y < yMin || pos.y > yMax || pos.z < zMin || pos.z > zMax) { + this.el.parentNode.removeChild(this.el); + } + }; + })() +}); diff --git a/src/hub.html b/src/hub.html index 3438ab9a046581e9e5f940e25a98ede7ff88bb91..3a649ad3c2f3082ed57b4b61e265acb943d4dd9f 100644 --- a/src/hub.html +++ b/src/hub.html @@ -187,6 +187,7 @@ auto-box-collider position-at-box-shape-border="target:.delete-button" auto-scale-cannon-physics-body + destroy-at-extreme-distances > <a-entity class="delete-button" visible-while-frozen scale="0.08 0.08 0.08"> <a-entity mixin="rounded-text-button" remove-object-button position="0 0 0"> </a-entity> @@ -208,6 +209,7 @@ image-plus sticky-object="autoLockOnLoad: true; autoLockOnRelease: true;" position-at-box-shape-border="target:.delete-button;dirs:forward,back" + destroy-at-extreme-distances > <a-entity class="delete-button" visible-while-frozen> <a-entity mixin="rounded-text-button" remove-networked-object-button position="0 0 0"> </a-entity> diff --git a/src/hub.js b/src/hub.js index fa21149111a673f2390b7acc6b33eaeb3dbfa840..123af93bfec23e1d828d51419b1d963e17e30bbd 100644 --- a/src/hub.js +++ b/src/hub.js @@ -73,6 +73,7 @@ import "./components/sticky-object"; import "./components/auto-scale-cannon-physics-body"; import "./components/position-at-box-shape-border"; import "./components/remove-networked-object-button"; +import "./components/destroy-at-extreme-distances"; import ReactDOM from "react-dom"; import React from "react";