diff --git a/src/network-schemas.js b/src/network-schemas.js index 0132c325fa54fddf2876dc36d30b61b6ac9f4ce0..9e20a17ca68bf2d669fbeb68d78f665c94de2ed9 100644 --- a/src/network-schemas.js +++ b/src/network-schemas.js @@ -1,34 +1,23 @@ function registerNetworkSchemas() { - const xyzNotAlmostEqual = "xyzNotAlmostEqual"; - const positionEpsilon = 0.01; - const rotationEpsilon = 1; + const positionRequiresUpdate = (oldData, newData) => { + return !NAF.utils.almostEqualVec3(oldData, newData, 0.001); + }; - NAF.schemas.registerDirtyPredicate(xyzNotAlmostEqual, (v, w, options) => { - const epsilon = options.epsilon; - return Math.abs(v.x - w.x) > epsilon || Math.abs(v.z - w.z) > epsilon || Math.abs(v.y - w.y) > epsilon; - }); + const rotationRequiresUpdate = (oldData, newData) => { + return !NAF.utils.almostEqualVec3(oldData, newData, 0.5); + }; NAF.schemas.add({ template: "#remote-avatar-template", components: [ { component: "position", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: positionEpsilon - } - } + requiresNetworkUpdate: positionRequiresUpdate }, { component: "rotation", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: rotationEpsilon - } - }, - lerp: false + lerp: false, + requiresNetworkUpdate: rotationRequiresUpdate }, "scale", "player-info", @@ -36,42 +25,22 @@ function registerNetworkSchemas() { { selector: ".camera", component: "position", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: positionEpsilon - } - } + requiresNetworkUpdate: positionRequiresUpdate }, { selector: ".camera", component: "rotation", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: rotationEpsilon - } - } + requiresNetworkUpdate: rotationRequiresUpdate }, { selector: ".left-controller", component: "position", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: positionEpsilon - } - } + requiresNetworkUpdate: positionRequiresUpdate }, { selector: ".left-controller", component: "rotation", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: rotationEpsilon - } - } + requiresNetworkUpdate: rotationRequiresUpdate }, { selector: ".left-controller", @@ -80,22 +49,12 @@ function registerNetworkSchemas() { { selector: ".right-controller", component: "position", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: positionEpsilon - } - } + requiresNetworkUpdate: positionRequiresUpdate }, { selector: ".right-controller", component: "rotation", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: rotationEpsilon - } - } + requiresNetworkUpdate: rotationRequiresUpdate }, { selector: ".right-controller", @@ -108,22 +67,10 @@ function registerNetworkSchemas() { template: "#video-template", components: [ { - component: "position", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: positionEpsilon - } - } + component: "position" }, { - component: "rotation", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: rotationEpsilon - } - } + component: "rotation" }, "visible" ] @@ -134,21 +81,11 @@ function registerNetworkSchemas() { components: [ { component: "position", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: positionEpsilon - } - } + requiresNetworkUpdate: positionRequiresUpdate }, { component: "rotation", - dirtyPredicate: { - name: xyzNotAlmostEqual, - options: { - epsilon: rotationEpsilon - } - } + requiresNetworkUpdate: rotationRequiresUpdate }, "scale" ]