diff --git a/src/components/spawn-controller.js b/src/components/spawn-controller.js index f4f4032d87ffba697a2cc967729d3f4f75e6782c..1daf01b756e4308f1f9d50ceffd362aeb4b8e399 100644 --- a/src/components/spawn-controller.js +++ b/src/components/spawn-controller.js @@ -1,5 +1,13 @@ AFRAME.registerComponent("spawn-controller", { + schema: { + target: { type: "selector" }, + loadedEvent: { type: "string" } + }, init() { + this.onLoad = this.onLoad.bind(this); + this.data.target.addEventListener(this.data.loadedEvent, this.onLoad); + }, + onLoad() { const spawnPoints = document.querySelectorAll("[spawn-point]"); if (spawnPoints.length === 0) { @@ -7,10 +15,10 @@ AFRAME.registerComponent("spawn-controller", { return; } - const spawnPointIndex = Math.round(spawnPoints.length * Math.random()); + const spawnPointIndex = Math.round((spawnPoints.length - 1) * Math.random()); const spawnPoint = spawnPoints[spawnPointIndex]; - this.el.object3D.position.copy(spawnPoint.object3D.position); + spawnPoint.object3D.getWorldPosition(this.el.object3D.position); this.el.object3D.rotation.copy(spawnPoint.object3D.rotation); } }); diff --git a/src/hub.html b/src/hub.html index 6632c5c928f4162635386509df8fa8df2fcf5924..2da86cb78a61aeb1dc1994de526a5762c696e03a 100644 --- a/src/hub.html +++ b/src/hub.html @@ -210,7 +210,7 @@ <a-entity id="player-rig" networked="template: #remote-avatar-template; attachTemplateToLocal: false;" - spawn-controller="radius: 4;" + spawn-controller="loadedEvent: bundleloaded; target: #environment-root" wasd-to-analog2d character-controller="pivot: #player-camera" ik-root