From 30390b72e9a10f77296ac94ebfbc89f68b5d486a Mon Sep 17 00:00:00 2001 From: joni <johnfshaughnessy@gmail.com> Date: Wed, 8 Nov 2017 14:38:05 -0800 Subject: [PATCH] cleanup --- public/index.html | 3 +- src/components/character-controller.js | 87 +++++++++++--------------- src/components/split-axis-events.js | 3 + src/input-mappings.js | 5 +- 4 files changed, 42 insertions(+), 56 deletions(-) diff --git a/public/index.html b/public/index.html index 195f3133d..ba4789adf 100644 --- a/public/index.html +++ b/public/index.html @@ -19,8 +19,7 @@ audio: true; debug: true; connectOnLoad: false;" - mute-mic="eventSrc: a-scene; toggleEvents: action_mute" - virtual-gamepad-controls> + mute-mic="eventSrc: a-scene; toggleEvents: action_mute"> <a-assets> <img id="grid" src="assets/grid.png" crossorigin="anonymous" /> diff --git a/src/components/character-controller.js b/src/components/character-controller.js index c1d74e8fa..82f2237c2 100644 --- a/src/components/character-controller.js +++ b/src/components/character-controller.js @@ -7,17 +7,15 @@ var TAU = Math.PI * 2; AFRAME.registerComponent("character-controller", { schema: { groundAcc: { default: 10 }, - verticalAcc: { default: 80 }, easing: { default: 8 }, pivot: { type: "selector" }, snapRotationRadian: { default: TAU / 8 } }, init: function() { - this.startTranslating = this.startTranslating.bind(this); - this.stopTranslating = this.stopTranslating.bind(this); this.velocity = new THREE.Vector3(0, 0, 0); this.accelerationInput = new THREE.Vector3(0, 0, 0); + this.onStopMoving = this.onStopMoving.bind(this); this.onTranslateX = this.onTranslateX.bind(this); this.onTranslateY = this.onTranslateY.bind(this); this.onTranslateZ = this.onTranslateZ.bind(this); @@ -32,8 +30,6 @@ AFRAME.registerComponent("character-controller", { this.boost = 1.0; this.onBoost = this.onBoost.bind(this); - this.startRotating = this.startRotating.bind(this); - this.stopRotating = this.stopRotating.bind(this); this.pendingSnapRotationMatrix = new THREE.Matrix4(); this.onSnapRotateLeft = this.onSnapRotateLeft.bind(this); this.onSnapRotateRight = this.onSnapRotateRight.bind(this); @@ -52,11 +48,7 @@ AFRAME.registerComponent("character-controller", { play: function() { var eventSrc = this.el.sceneEl; - this.el.sceneEl.addEventListener( - "start_translating", - this.startTranslating - ); - eventSrc.addEventListener("stop_translating", this.stopTranslating); + eventSrc.addEventListener("stop_moving", this.onStopMoving); eventSrc.addEventListener("translateX", this.onTranslateX); eventSrc.addEventListener("translateY", this.onTranslateY); eventSrc.addEventListener("translateZ", this.onTranslateZ); @@ -85,69 +77,61 @@ AFRAME.registerComponent("character-controller", { }, pause: function() { - this.el.removeEventListener("start_translating", this.startTranslating); - this.el.removeEventListener("stop_translating", this.stopTranslating); - this.el.removeEventListener("translateX", this.onTranslateX); - this.el.removeEventListener("translateY", this.onTranslateY); - this.el.removeEventListener("translateZ", this.onTranslateZ); - this.el.removeEventListener("action_move_forward", this.onMoveForward); - this.el.removeEventListener( + var eventSrc = this.el.sceneEl; + eventSrc.removeEventListener("stop_moving", this.onStopMoving); + eventSrc.removeEventListener("translateX", this.onTranslateX); + eventSrc.removeEventListener("translateY", this.onTranslateY); + eventSrc.removeEventListener("translateZ", this.onTranslateZ); + eventSrc.removeEventListener("action_move_forward", this.onMoveForward); + eventSrc.removeEventListener( "action_dont_move_forward", this.onDontMoveForward ); - this.el.removeEventListener("action_move_backward", this.onMoveBackward); - this.el.removeEventListener( + eventSrc.removeEventListener("action_move_backward", this.onMoveBackward); + eventSrc.removeEventListener( "action_dont_move_backward", this.onDontMoveBackward ); - this.el.removeEventListener("action_move_left", this.onMoveLeft); - this.el.removeEventListener("action_dont_move_left", this.onDontMoveLeft); - this.el.removeEventListener("action_move_right", this.onMoveRight); - this.el.removeEventListener("action_dont_move_right", this.onDontMoveRight); - this.el.removeEventListener("rotateY", this.onRotateY); - this.el.removeEventListener( + eventSrc.removeEventListener("action_move_left", this.onMoveLeft); + eventSrc.removeEventListener("action_dont_move_left", this.onDontMoveLeft); + eventSrc.removeEventListener("action_move_right", this.onMoveRight); + eventSrc.removeEventListener( + "action_dont_move_right", + this.onDontMoveRight + ); + eventSrc.removeEventListener("rotateY", this.onRotateY); + eventSrc.removeEventListener( "action_snap_rotate_left", this.onSnapRotateLeft ); - this.el.removeEventListener( + eventSrc.removeEventListener( "action_snap_rotate_right", this.onSnapRotateRight ); }, - startTranslating: function() {}, - - stopTranslating: function() { + onStopMoving: function(event) { this.accelerationInput.set(0, 0, 0); }, - startRotating: function() {}, - - stopRotating: function() {}, - onTranslateX: function(event) { - // bug : the last trackpadaxismovex event.detail is the html el instead of a number. - // I don't know why this is... - // Is touch up considered an axismove to (0,0)? - if (typeof event.detail === "number") { - this.accelerationInput.setX(event.detail); - } else { - this.accelerationInput.setX(0); - } + // The type check here is because the last axismove event that is captured here sends + // the el as the event.detail. This should probably be caught earlier. + this.accelerationInput.setX( + typeof event.detail === "number" ? event.detail : 0 + ); }, + onTranslateY: function(event) { - if (typeof event.detail === "number") { - this.accelerationInput.setY(event.detail); - } else { - this.accelerationInput.setY(0); - } + this.accelerationInput.setY( + typeof event.detail === "number" ? event.detail : 0 + ); }, + onTranslateZ: function(event) { - if (typeof event.detail === "number") { - this.accelerationInput.setZ(event.detail); - } else { - this.accelerationInput.setZ(0); - } + this.accelerationInput.setZ( + typeof event.detail === "number" ? event.detail : 0 + ); }, onMoveForward: function(event) { @@ -307,6 +291,7 @@ AFRAME.registerComponent("character-controller", { if (Math.abs(velocity.z) < CLAMP_VELOCITY) { velocity.z = 0; } + var dvx = data.groundAcc * dt * this.accelerationInput.x * this.boost; var dvz = data.groundAcc * dt * -this.accelerationInput.z * this.boost; velocity.x += dvx; diff --git a/src/components/split-axis-events.js b/src/components/split-axis-events.js index 8ae9bb44e..291b91ff6 100644 --- a/src/components/split-axis-events.js +++ b/src/components/split-axis-events.js @@ -22,6 +22,9 @@ AFRAME.registerComponent("split-axis-events", { }, onButtonChanged: function(event) { + if (this.pressed && !event.detail.state.pressed) { + this.el.emit("touchpadbuttonup"); + } this.pressed = event.detail.state.pressed; } }); diff --git a/src/input-mappings.js b/src/input-mappings.js index 05b431aed..d1e8c6d4f 100644 --- a/src/input-mappings.js +++ b/src/input-mappings.js @@ -7,10 +7,9 @@ export default function registerInputMappings() { dpadrightdown: "action_snap_rotate_right", dpadcenterdown: "action_teleport_down", // @TODO once once #30 lands in aframe-teleport controls this just maps to "action_teleport_aim" dpadcenterup: "action_teleport_up", // @TODO once once #30 lands in aframe-teleport controls this just maps to "action_teleport_teleport" - trackpadtouchstart: "start_translating", - trackpadtouchend: "stop_translating", touchpadpressedaxismovex: "translateX", - touchpadpressedaxismovey: "translateZ" + touchpadpressedaxismovey: "translateZ", + touchpadbuttonup: "stop_moving" }, "vive-controls": { menudown: "action_mute" -- GitLab