diff --git a/src/components/character-controller.js b/src/components/character-controller.js index 174148d9c0109bde06e52f4cd68a89c798331208..2b86ff0a353b406d073238c8aca664197ff7084d 100644 --- a/src/components/character-controller.js +++ b/src/components/character-controller.js @@ -184,7 +184,15 @@ AFRAME.registerComponent("character-controller", { velocity.y -= velocity.y * data.easing * dt; } - // Clamp velocity easing. + const dvx = data.groundAcc * dt * this.accelerationInput.x; + const dvz = data.groundAcc * dt * -this.accelerationInput.z; + velocity.x += dvx; + velocity.z += dvz; + + const decay = 0.7; + this.accelerationInput.x = this.accelerationInput.x * decay; + this.accelerationInput.z = this.accelerationInput.z * decay; + if (Math.abs(velocity.x) < CLAMP_VELOCITY) { velocity.x = 0; } @@ -194,14 +202,5 @@ AFRAME.registerComponent("character-controller", { if (Math.abs(velocity.z) < CLAMP_VELOCITY) { velocity.z = 0; } - - const dvx = data.groundAcc * dt * this.accelerationInput.x; - const dvz = data.groundAcc * dt * -this.accelerationInput.z; - velocity.x += dvx; - velocity.z += dvz; - - const decay = 0.7; - this.accelerationInput.x = this.accelerationInput.x * decay; - this.accelerationInput.z = this.accelerationInput.z * decay; } }); diff --git a/src/network-schemas.js b/src/network-schemas.js index d30176a299f5ff7fd5336509454910325c116e58..9e20a17ca68bf2d669fbeb68d78f665c94de2ed9 100644 --- a/src/network-schemas.js +++ b/src/network-schemas.js @@ -1,30 +1,46 @@ function registerNetworkSchemas() { + const positionRequiresUpdate = (oldData, newData) => { + return !NAF.utils.almostEqualVec3(oldData, newData, 0.001); + }; + + const rotationRequiresUpdate = (oldData, newData) => { + return !NAF.utils.almostEqualVec3(oldData, newData, 0.5); + }; + NAF.schemas.add({ template: "#remote-avatar-template", components: [ - "position", + { + component: "position", + requiresNetworkUpdate: positionRequiresUpdate + }, { component: "rotation", - lerp: false + lerp: false, + requiresNetworkUpdate: rotationRequiresUpdate }, "scale", "player-info", "networked-avatar", { selector: ".camera", - component: "position" + component: "position", + requiresNetworkUpdate: positionRequiresUpdate }, { selector: ".camera", - component: "rotation" + component: "rotation", + requiresNetworkUpdate: rotationRequiresUpdate }, { selector: ".left-controller", - component: "position" + component: "position", + requiresNetworkUpdate: positionRequiresUpdate }, { selector: ".left-controller", - component: "rotation" + component: "rotation", + requiresNetworkUpdate: rotationRequiresUpdate }, { selector: ".left-controller", @@ -32,11 +48,13 @@ function registerNetworkSchemas() { }, { selector: ".right-controller", - component: "position" + component: "position", + requiresNetworkUpdate: positionRequiresUpdate }, { selector: ".right-controller", - component: "rotation" + component: "rotation", + requiresNetworkUpdate: rotationRequiresUpdate }, { selector: ".right-controller", @@ -47,12 +65,30 @@ function registerNetworkSchemas() { NAF.schemas.add({ template: "#video-template", - components: ["position", "rotation", "visible"] + components: [ + { + component: "position" + }, + { + component: "rotation" + }, + "visible" + ] }); NAF.schemas.add({ template: "#interactable-template", - components: ["position", "rotation", "scale"] + components: [ + { + component: "position", + requiresNetworkUpdate: positionRequiresUpdate + }, + { + component: "rotation", + requiresNetworkUpdate: rotationRequiresUpdate + }, + "scale" + ] }); } diff --git a/yarn.lock b/yarn.lock index cc1b5ae12aacde99c092845e4ad4a16764c33b83..9f1d228ef4b5405d6abb35b06f0d53511d37171d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2016,8 +2016,8 @@ colormin@^1.0.5: has "^1.0.1" colors@*: - version "1.2.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.3.tgz#1b152a9c4f6c9f74bc4bb96233ad0b7983b79744" + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" colors@1.0.3: version "1.0.3" @@ -5452,7 +5452,7 @@ neo-async@^2.5.0: "networked-aframe@https://github.com/mozillareality/networked-aframe#mr-social-client/master": version "0.6.1" - resolved "https://github.com/mozillareality/networked-aframe#641b5e44b8514d02925e3efb4289ca36a41c1006" + resolved "https://github.com/mozillareality/networked-aframe#424b41cfdf53db64033885da411c33685644db97" dependencies: easyrtc "1.1.0" express "^4.10.7"