grid-apps-cmms/src/main/mesh.js

114 lines
2.9 KiB
JavaScript
Raw Normal View History

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-26 20:01:56 -05:00
(function() {
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,
sky = false,
2021-12-26 13:59:02 -05:00
dark = false,
ortho = false,
zoomrev = true,
2021-12-26 13:59:02 -05:00
zoomspd = 1,
2021-12-26 20:01:56 -05:00
space = moto.Space,
platform = space.platform;
2021-12-26 13:59:02 -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
// trigger space event binding
broker.send.space_init({ space, platform });
// 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 => {
let { space, platform } = data;
let platcolor = 0x00ff00;
// add file drop handler
space.event.addHandlers(self, [
'drop', (evt) => {
estop(evt);
platform.setColor(platcolor);
load.File.load(evt.dataTransfer.files[0])
.then(data => {
broker.send.space_load(data);
})
.catch(error => {
dbug.error(error);
})
.finally(() => {
// hide spinner
});
},
'dragover', evt => {
estop(evt);
evt.dataTransfer.dropEffect = 'copy';
let color = platform.setColor(0x00ff00);
if (color !== 0x00ff00) platcolor = color;
},
'dragleave', evt => {
platform.setColor(platcolor);
}
]);
});
// add object loader
2021-12-29 07:54:16 -05:00
broker.subscribe('space_load', data => {
for (let od of data) {
2021-12-29 17:20:17 -05:00
let obj = new mesh.object(od);
moto.Space.world.add(obj.mesh);
}
});
2021-12-26 13:59:02 -05:00
2021-12-26 20:01:56 -05:00
// remove version cache bust from url
window.history.replaceState({},'','/mesh/');
2021-12-26 20:01:56 -05:00
// setup init() trigger when dom + scripts complete
document.onreadystatechange = function() {
if (document.readyState === 'complete') {
2021-12-26 13:59:02 -05:00
init();
}
}
2021-12-26 20:01:56 -05:00
// finalize modules
gapp.finalize("main.mesh", [
"moto.license", // dep: moto.license
2021-12-29 12:55:45 -05:00
"moto.webui", // dep: moto.webui
2021-12-29 10:37:17 -05:00
"moto.client", // dep: moto.client
2021-12-29 07:54:16 -05:00
"moto.broker", // dep: moto.broker
"moto.space", // dep: moto.space
"mesh.object", // dep: mesh.object
"load.file", // dep: load.file
]);
2021-12-26 20:01:56 -05:00
})();