network-schemas.js 2.13 KiB
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: [
{
component: "position",
requiresNetworkUpdate: positionRequiresUpdate
},
{
component: "rotation",
requiresNetworkUpdate: rotationRequiresUpdate
},
"scale",
"player-info",
"networked-avatar",
{
selector: ".camera",
component: "position",
requiresNetworkUpdate: positionRequiresUpdate
},
{
selector: ".camera",
component: "rotation",
requiresNetworkUpdate: rotationRequiresUpdate
},
{
selector: ".left-controller",
component: "position",
requiresNetworkUpdate: positionRequiresUpdate
},
{
selector: ".left-controller",
component: "rotation",
requiresNetworkUpdate: rotationRequiresUpdate
},
{
selector: ".left-controller",
component: "visible"
},
{
selector: ".right-controller",
component: "position",
requiresNetworkUpdate: positionRequiresUpdate
},
{
selector: ".right-controller",
component: "rotation",
requiresNetworkUpdate: rotationRequiresUpdate
},
{
selector: ".right-controller",
component: "visible"
}
]
});
NAF.schemas.add({
template: "#video-template",
components: [
{
component: "position"
},
{
component: "rotation"
},
"visible"
]
});
NAF.schemas.add({
template: "#interactable-template",
components: [
{
component: "position",
requiresNetworkUpdate: positionRequiresUpdate
},
{
component: "rotation",
requiresNetworkUpdate: rotationRequiresUpdate
},
"scale"
]
});
}
export default registerNetworkSchemas;