var BD = {}; BD.Private = {}; BD.Private.sendData = function(url, data) { if (BD.Private.enabled) { // Append time to data data.time = Date.now() / 1000; var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader("Content-type", "application/json;charset=UTF-8"); // xhr.onreadystatechange = function() { // if(xhr.readyState == 4 && xhr.status == 200) { // console.log("Done : " + xhr.responseText); // } // } xhr.send(JSON.stringify(data)); } } BD.Private.enabled = true; BD.enable = function() { BD.Private.enabled = true; } BD.disable = function() { BD.Private.enabled = false; } BD.Private.compactCamera = function(camera) { return { position: { x: camera.position.x, y: camera.position.y, z: camera.position.z }, target: { x: camera.target.x, y: camera.target.y, z: camera.target.z } }; } BD.Event = {}; BD.Event.ArrowClicked = function() {}; BD.Event.ArrowClicked.prototype.send = function() { var url = "/arrow-clicked"; var data = {arrow_id: this.arrow_id}; BD.Private.sendData(url, data); } BD.Event.CoinClicked = function() {}; BD.Event.CoinClicked.prototype.send = function() { var url = "/coin-clicked"; var data = {coin_id: this.coin_id}; BD.Private.sendData(url, data); } BD.Event.KeyboardEvent = function() {}; BD.Event.KeyboardEvent.prototype.send = function() { var url = "/keyboard-event"; var data = { camera: BD.Private.compactCamera(this.camera) } BD.Private.sendData(url, data); } BD.Event.ResetClicked = function() {}; BD.Event.ResetClicked.prototype.send = function() { var url = "/reset-clicked"; var data = {}; BD.Private.sendData(url, data); } BD.Event.PreviousNextClicked = function() {}; BD.Event.PreviousNextClicked.prototype.send = function() { var url = "/previous-next-clicked"; var data = { // casts previous to boolean previous: this.previous, camera: BD.Private.compactCamera(this.camera) }; BD.Private.sendData(url, data); } BD.Event.Hovered = function() {}; BD.Event.Hovered.prototype.send = function() { var url = "/hovered"; var data = { start: this.start, arrow_id: this.arrow_id }; BD.Private.sendData(url, data); }