content/hifi-content/brosche/dev/100-recordings-bot.js
2022-02-13 21:50:01 +01:00

125 lines
No EOL
4.2 KiB
JavaScript

randFloat = function(low, high) {
return low + Math.random() * (high - low);
}
var baseURL = "https://hifi-content.s3.amazonaws.com/milad/ROLC/Organize/Projects/Testing/Flow/out/hfr/";
// Link to get the urls from
var GOOGLE_SHEET_URL = "https://script.googleusercontent.com/a/macros/highfidelity.io/echo?user_content_key=z30W_Z9rqfb41pGEoxCkUM9yv8ZN8mxWuMyDWUHroj3cJ65OTSWNE_Zq7wvrTybnnFtRp6azMkya2K4Hj_UvG2HA9j2tP4Hjm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_nRPgeZU6HP_Ok_bZ6q4uc2IEwUGUhs3tubd_SaoYEJGc6Y4WQVrmGLClD6RzMAfZPxqtsdMQ32tpzl66ygAELl7JpluoKw78VudcD_Dja5DuJzk35EV1vQ&lib=MzB5vcFo1OT_VNOUwG7287OYoCQvnAuFY";
var rand = 10000;
var min = 2000;
var timeoutPeriod = Math.floor(Math.random()*rand)+min;
var sheetXHR;
Script.setTimeout(function(){
//console.log("about to run XHR");
sheetXHR = new XHR(GOOGLE_SHEET_URL, sheetSuccess, sheetFailure);
}, timeoutPeriod);
var TABLE = [];
var TOTAL_TO_GRAB = 100;
function XHR(url, successCb, failureCb, TIMEOUT) {
//print("XHR: request url = " + url);
var self = this;
this.url = url;
this.successCb = successCb;
this.failureCb = failureCb;
this.req = new XMLHttpRequest();
this.req.open("GET", url, true);
this.req.timeout = TIMEOUT;
this.req.ontimeout = function () {
if (self.failureCb) {
self.failureCb(0, "timeout");
}
};
this.req.onreadystatechange = function () {
if (self.req.readyState === self.req.DONE) {
if (self.req.status === 200 || self.req.status === 203) {
if (self.successCb) {
self.successCb(self.req.responseText);
}
} else {
if (self.failureCb) {
self.failureCb(self.req.status, "done");
}
}
}
};
this.req.send();
}
function baseName(str) {
var base = new String(str).substring(str.lastIndexOf('/') + 1);
if (base.lastIndexOf(".") !== -1) {
base = base.substring(0, base.lastIndexOf("."));
}
return base;
}
function sheetFailure(status, reason) {
//console.log("sheetFailure status code = " + status + ", reason = " + reason);
}
function sheetSuccess(response) {
//console.log("sheetSuccess status, = ");
TABLE = JSON.parse(response);
TABLE.shift(); // strip off the header row.
for (var i = 0; i < TOTAL_TO_GRAB; i++){
TABLE.map(function(recording){
return baseName(TABLE[i].avatar_HFR);
})
}
var randomIndex = Math.floor((Math.random() * TABLE.length) % TABLE.length);
var RECORDING_URL = TABLE[randomIndex].avatar_HFR;
var LOCATIONS_ARRAY = [{ min_x: -7, max_x: 17, y: -13.5, min_z: 42, max_z: 73}];
var LOCATION_PARAMS = LOCATIONS_ARRAY[Math.floor(Math.random() * LOCATIONS_ARRAY.length)];
var LOCATION = { x: randFloat(LOCATION_PARAMS.min_x, LOCATION_PARAMS.max_x), y: LOCATION_PARAMS.y, z: randFloat(LOCATION_PARAMS.min_z, LOCATION_PARAMS.max_z) };
//Vec3.print("RANDOM LOCATION SELECTED:", LOCATION);
// Disable the privacy bubble
Users.disableIgnoreRadius();
// Set position here if playFromCurrentLocation is true
Avatar.position = LOCATION;
Avatar.orientation = Quat.fromPitchYawRollDegrees(0, randFloat(0, 360), 0);
Avatar.scale = 1.0;
Agent.isAvatar = true;
Recording.loadRecording(RECORDING_URL, function(success) {
if (success) {
Script.update.connect(update);
} else {
// print("Failed to load recording from " + RECORDING_URL);
}
});
}
count = 300; // Randomly wait some period of time before starting the recording
function update(event) {
if (count > 0) {
count--;
return;
}
if (count == 0) {
Recording.setPlayFromCurrentLocation(true);
Recording.setPlayerLoop(true);
Recording.startPlaying();
//Vec3.print("Playing from ", Avatar.position);
count--;
}
EntityViewer.setPosition(Avatar.position);
EntityViewer.setOrientation(Avatar.orientation);
EntityViewer.queryOctree();
if (!Recording.isPlaying()) {
Script.update.disconnect(update);
}
}