2021-12-27 10:14:21 -05:00
|
|
|
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
|
|
|
|
|
|
|
|
|
"use strict";
|
2021-12-26 13:59:02 -05:00
|
|
|
|
2021-12-29 00:19:22 -05:00
|
|
|
// some ui helpers that need to go into a ui class
|
2021-12-26 13:59:02 -05:00
|
|
|
function $(id) {
|
|
|
|
|
return document.getElementById(id);
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 19:43:48 -05:00
|
|
|
function $d(id, v) {
|
|
|
|
|
$(id).style.display = v;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 20:01:56 -05:00
|
|
|
function $h(id, h) {
|
|
|
|
|
$(id).innerHTML = h;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-28 15:52:28 -05:00
|
|
|
function estop(evt) {
|
|
|
|
|
evt.stopPropagation();
|
|
|
|
|
evt.preventDefault();
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 20:01:56 -05:00
|
|
|
(function() {
|
|
|
|
|
|
2021-12-29 00:19:22 -05:00
|
|
|
let broker = gapp.broker;
|
2021-12-26 20:01:56 -05:00
|
|
|
|
2021-12-26 13:59:02 -05:00
|
|
|
function init() {
|
2021-12-26 20:01:56 -05:00
|
|
|
let moto = self.moto,
|
2021-12-27 16:24:39 -05:00
|
|
|
sky = false,
|
2021-12-26 13:59:02 -05:00
|
|
|
dark = false,
|
|
|
|
|
ortho = false,
|
2021-12-27 16:24:39 -05:00
|
|
|
zoomrev = true,
|
2021-12-26 13:59:02 -05:00
|
|
|
zoomspd = 1,
|
2021-12-26 20:01:56 -05:00
|
|
|
space = moto.Space,
|
2021-12-29 00:19:22 -05:00
|
|
|
platform = space.platform;
|
2021-12-26 13:59:02 -05:00
|
|
|
|
2021-12-26 17:17:34 -05:00
|
|
|
// setup default workspace
|
2021-12-28 13:02:01 -05:00
|
|
|
space.sky.set({
|
|
|
|
|
grid: sky,
|
|
|
|
|
color: dark ? 0 : 0xffffff
|
|
|
|
|
});
|
2021-12-26 20:01:56 -05:00
|
|
|
space.init($('container'), delta => { }, ortho);
|
2021-12-27 10:14:21 -05:00
|
|
|
platform.onMove(delta => { });
|
2021-12-28 13:02:01 -05:00
|
|
|
platform.set({
|
|
|
|
|
volume: false,
|
|
|
|
|
round: false,
|
|
|
|
|
zOffset: 0.2,
|
|
|
|
|
opacity: 0.3,
|
|
|
|
|
color: 0xcccccc,
|
|
|
|
|
zoom: { reverse: true, speed: 1 },
|
|
|
|
|
size: { width: 300, depth: 300, height: 2.5, maxz: 2.5 },
|
|
|
|
|
grid: { major: 25, minor: 5, majorColor: 0x999999, minorColor: 0xcccccc }
|
|
|
|
|
});
|
2021-12-26 20:01:56 -05:00
|
|
|
space.view.setZoom(zoomrev, zoomspd);
|
|
|
|
|
space.useDefaultKeys(true);
|
2021-12-26 19:43:48 -05:00
|
|
|
|
2021-12-29 00:19:22 -05:00
|
|
|
// trigger space event binding
|
2021-12-29 00:36:04 -05:00
|
|
|
broker.send.space_init({ space, platform });
|
2021-12-29 00:19:22 -05:00
|
|
|
|
|
|
|
|
// start worker
|
|
|
|
|
moto.client.start(`/code/mesh_work?${gapp.version}`);
|
|
|
|
|
|
|
|
|
|
// set app version
|
|
|
|
|
$h('app-name', "Mesh:Tool");
|
|
|
|
|
$h('app-vers', gapp.version);
|
|
|
|
|
|
|
|
|
|
// hide loading curtain
|
|
|
|
|
$d('curtain','none');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// add space event bindings
|
2021-12-29 07:54:16 -05:00
|
|
|
broker.subscribe('space_init', data => {
|
2021-12-29 00:19:22 -05:00
|
|
|
let { space, platform } = data;
|
|
|
|
|
let platcolor = 0x00ff00;
|
2021-12-28 15:52:28 -05:00
|
|
|
// add file drop handler
|
|
|
|
|
space.event.addHandlers(self, [
|
|
|
|
|
'drop', (evt) => {
|
|
|
|
|
estop(evt);
|
|
|
|
|
platform.setColor(platcolor);
|
|
|
|
|
load.File.load(evt.dataTransfer.files[0])
|
|
|
|
|
.then(data => {
|
2021-12-29 00:36:04 -05:00
|
|
|
broker.send.space_load(data);
|
2021-12-28 15:52:28 -05:00
|
|
|
})
|
2021-12-29 00:19:22 -05:00
|
|
|
.catch(error => {
|
|
|
|
|
dbug.error(error);
|
|
|
|
|
})
|
|
|
|
|
.finally(() => {
|
|
|
|
|
// hide spinner
|
|
|
|
|
});
|
2021-12-28 15:52:28 -05:00
|
|
|
},
|
2021-12-29 00:19:22 -05:00
|
|
|
'dragover', evt => {
|
2021-12-28 15:52:28 -05:00
|
|
|
estop(evt);
|
|
|
|
|
evt.dataTransfer.dropEffect = 'copy';
|
|
|
|
|
let color = platform.setColor(0x00ff00);
|
|
|
|
|
if (color !== 0x00ff00) platcolor = color;
|
|
|
|
|
},
|
2021-12-29 00:19:22 -05:00
|
|
|
'dragleave', evt => {
|
2021-12-28 15:52:28 -05:00
|
|
|
platform.setColor(platcolor);
|
|
|
|
|
}
|
|
|
|
|
]);
|
2021-12-29 00:19:22 -05:00
|
|
|
});
|
2021-12-28 15:52:28 -05:00
|
|
|
|
2021-12-29 00:19:22 -05:00
|
|
|
// add object loader
|
2021-12-29 07:54:16 -05:00
|
|
|
broker.subscribe('space_load', data => {
|
2021-12-29 00:19:22 -05:00
|
|
|
console.log({space_load: data});
|
|
|
|
|
});
|
2021-12-26 13:59:02 -05:00
|
|
|
|
2021-12-26 20:01:56 -05:00
|
|
|
// remove version cache bust from url
|
2021-12-29 00:19:22 -05:00
|
|
|
window.history.replaceState({},'','/mesh/');
|
2021-12-26 20:01:56 -05:00
|
|
|
|
|
|
|
|
// setup init() trigger when dom + scripts complete
|
2021-12-29 00:19:22 -05:00
|
|
|
document.onreadystatechange = function() {
|
|
|
|
|
if (document.readyState === 'complete') {
|
2021-12-26 13:59:02 -05:00
|
|
|
init();
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-12-26 20:01:56 -05:00
|
|
|
|
2021-12-29 00:19:22 -05:00
|
|
|
// finalize modules
|
|
|
|
|
gapp.finalize("main.mesh", [
|
2021-12-29 07:54:16 -05:00
|
|
|
"moto.broker", // dep: moto.broker
|
|
|
|
|
"moto.space" // dep: moto.space
|
2021-12-29 00:19:22 -05:00
|
|
|
]);
|
|
|
|
|
|
2021-12-26 20:01:56 -05:00
|
|
|
})();
|