diff --git a/index.html b/index.html
index 472a595..a3ac81e 100644
--- a/index.html
+++ b/index.html
@@ -3030,6 +3030,7 @@ let gatesToPass = ["gate1","gate2","gate3"]
let gatesPassed = []
let firstGatePassed
let lapDurations = []
+let lapPoses = []
AFRAME.registerComponent('gate-through', {
dependencies: ['raycaster'],
@@ -3050,9 +3051,35 @@ AFRAME.registerComponent('gate-through', {
firstGatePassed = null
}
});
+ this.tick = AFRAME.utils.throttleTick(this.tick, 10, this);
+ },
+ tick: function(){
+ p = new THREE.Vector3();
+ r = new THREE.Quaternion();
+ playerwithbody.object3D.getWorldPosition(p);
+ playerwithbody.object3D.getWorldQuaternion(r);
+ if (gatesPassed.includes(gatesToPass[0]))
+ lapPoses.push({position:p,rotation:r,timetamp:Date.now()})
}
});
+function replayLastLap(){
+ ghost = playerwithbody.cloneNode()
+ ghost.id = "ghost"
+ AFRAME.scenes[0].appendChild(ghost)
+ ghost.setAttribute("visible", true)
+ ghost.setAttribute("material", "transparent: true;opacity:.5")
+ i=0
+ replay = setInterval( _=>{
+ ghost.setAttribute("position", lapPoses[++i].position)
+ ghost.object3D.quaternion.copy(lapPoses[i].rotation)
+ if (i==lapPoses.length-1){
+ clearInterval(replay)
+ ghost.parentNode.removeChild(ghost)
+ }
+ }, 10)
+}
+
function shoot(){
s = document.createElement("a-sphere");
s.setAttribute("radius", .01);