You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.5 KiB
JavaScript

import request from "./request.js";
class EgoPose {
constructor(sceneMeta, world, frameInfo) {
this.world = world;
this.data = this.world.data;
this.sceneMeta = sceneMeta;
}
preload(on_preload_finished) {
this.on_preload_finished = on_preload_finished;
this.load_ego_pose();
}
load_ego_pose() {
var xhr = new XMLHttpRequest();
// we defined the xhr
var _self = this;
xhr.onreadystatechange = function () {
if (this.readyState != 4) return;
if (this.status == 200) {
let egoPose = JSON.parse(this.responseText);
_self.egoPose = egoPose;
}
console.log(_self.world.frameInfo.frame, "egopose", "loaded");
_self.preloaded = true;
if (_self.on_preload_finished) {
_self.on_preload_finished();
}
if (_self.go_cmd_received) {
_self.go(this.webglScene, this.on_go_finished);
}
// end of state change: it can be after some time (async)
};
xhr.open(
"GET",
request + "/load_ego_pose" +
"?scene=" +
this.world.frameInfo.scene +
"&frame=" +
this.world.frameInfo.frame,
true
);
xhr.send();
}
go_cmd_received = false;
on_go_finished = null;
go(webglScene, on_go_finished) {
if (this.preloaded) {
if (on_go_finished) on_go_finished();
} else {
this.go_cmd_received = true;
this.on_go_finished = on_go_finished;
}
}
unload() {}
}
export { EgoPose };