more somewhat aesthetic space api changes

This commit is contained in:
Stewart Allen 2021-12-27 09:36:55 -05:00
commit a16986ef9d
3 changed files with 83 additions and 92 deletions

View file

@ -2158,7 +2158,7 @@
API.space.reload();
};
SPACE.addEventHandlers(self, [
SPACE.event.addHandlers(self, [
'keyup', keyUpHandler,
'keydown', keyDownHandler,
'keypress', keyHandler,
@ -2229,7 +2229,7 @@
}
}
SPACE.onEnterKey([
SPACE.event.onEnterKey([
UI.scaleX, selectionScale,
UI.scaleY, selectionScale,
UI.scaleZ, selectionScale,

View file

@ -1355,7 +1355,7 @@
let alert = feature.work_alerts ? API.show.alert("Rendering") : null;
startTime = Date.now();
STACKS.clear();
const stack = STACKS.create('print', SPACE.platform.world)
const stack = STACKS.create('print', SPACE.world)
output.forEach(layer => {
stack.add(layer);
});

View file

@ -9,11 +9,9 @@
DOC = document,
SCENE = new THREE.Scene(),
WORLD = new THREE.Group(),
WC = WORLD.children,
PI = Math.PI,
PI2 = PI / 2,
PI4 = PI / 4,
ROUND = Math.round,
panX = 0,
panY = 0,
panZ = 0,
@ -339,7 +337,13 @@
}
function setRulers(xon = ruler.xon, yon = ruler.yon, factor = ruler.factor, xl = ruler.xlabel, yl = ruler.ylabel) {
function setRulers(
xon = ruler.xon,
yon = ruler.yon,
factor = ruler.factor,
xl = ruler.xlabel,
yl = ruler.ylabel)
{
if (xon !== ruler.xon || yon !== ruler.yon || factor !== ruler.factor || xl !== ruler.xlabel || yl !== ruler.ylabel) {
ruler.factor = factor;
ruler.xon = xon;
@ -406,7 +410,12 @@
requestRefresh();
}
function setGrid(unitMajor = grid.unitMajor, unitMinor = grid.unitMinor, colorMajor = grid.colorMajor, colorMinor = grid.colorMinor) {
function setGrid(
unitMajor = grid.unitMajor,
unitMinor = grid.unitMinor,
colorMajor = grid.colorMajor,
colorMinor = grid.colorMinor)
{
if (!unitMajor) {
return;
}
@ -568,6 +577,30 @@
updateDraws();
}
function setRound(bool) {
let current = platform;
isRound = bool;
if (bool) {
platform = new THREE.Mesh(
new THREE.CylinderGeometry(.5, .5, 1, 60),
platformMaterial
);
platform.rotation.x = 0;
} else {
platform = new THREE.Mesh(
new THREE.BoxGeometry(1, 1, 1),
platformMaterial
);
platform.rotation.x = -PI2;
}
platform.position.y = current.position.y;
platform.visible = current.visible;
SCENE.remove(current);
SCENE.add(platform);
}
function refresh() {
refreshRequested = false;
clearTimeout(refreshTimeout);
@ -838,14 +871,17 @@
******************************************************************* */
let Space = MOTO.Space = {
alignTracking: alignTracking,
addEventListener: addEventListener,
addEventHandlers: addEventHandlers,
onEnterKey: onEnterKey,
onResize: onResize,
update: requestRefresh,
raycast: intersect,
refresh: refresh,
update: requestRefresh,
alignTracking: alignTracking,
raycast: intersect,
event: {
addHandlers: addEventHandlers,
onEnterKey: onEnterKey,
onResize: onResize
},
sky: {
showGrid: (b) => {
@ -876,15 +912,7 @@
active: updateLastAction
},
world: {
add: function(o) {
WORLD.add(o);
},
remove: function(o) {
WORLD.remove(o);
}
},
world: WORLD,
platform: {
update: updateDraws,
@ -894,59 +922,36 @@
setRulers: setRulers,
setGrid: setGrid,
setFont: setFont,
setRound: setRound,
showAxes: showAxes,
showVolume: showVolume,
showGrid: (b) => { grid.view.visible = b },
setMaxZ: (z) => { panY = z / 2 },
setCenter: (x,y,z) => { panX = x; panY = z, panZ = y },
isHidden: () => { return !showPlatform },
setHidden: (b) => { showPlatform = !b; platform.visible = !b },
setHiding: (b) => { hidePlatformBelow = b },
setZOff: (z) => { platformZOff = z; updatePlatformPosition() },
setGridZOff:(z) => { gridZOff = z; updatePlatformPosition() },
isHidden: () => { return !showPlatform },
isVisible: () => { return platform.visible },
opacity: (o) => { platform.material.opacity = o },
onMove: (f) => { platformOnMove = f },
onHover: (f) => { platformHover = f },
onClick: (f) => { platformClick = f},
size: () => { return platform.scale },
isVisible: () => { return platform.visible },
showGrid: (b) => { grid.view.visible = b },
setRound: (bool) => {
let current = platform;
isRound = bool;
if (bool) {
platform = new THREE.Mesh(
new THREE.CylinderGeometry(.5, .5, 1, 60),
platformMaterial
);
platform.rotation.x = 0;
} else {
platform = new THREE.Mesh(
new THREE.BoxGeometry(1, 1, 1),
platformMaterial
);
platform.rotation.x = -PI2;
}
platform.position.y = current.position.y;
platform.visible = current.visible;
SCENE.remove(current);
SCENE.add(platform);
},
world: WORLD
size: () => { return platform.scale }
},
view: {
top: (then) => { tweenCam({left: home, up: 0, panX, panY, panZ, then}) },
back: (then) => { tweenCam({left: PI, up: PI2, panX, panY, panZ, then}) },
home: (then) => { tweenCam({left: home, up, panX, panY, panZ, then}) },
front: (then) => { tweenCam({left: 0, up: PI2, panX, panY, panZ, then}) },
right: (then) => { tweenCam({left: PI2, up: PI2, panX, panY, panZ, then}) },
left: (then) => { tweenCam({left: -PI2, up: PI2, panX, panY, panZ, then}) },
reset: () => { viewControl.reset(); requestRefresh() },
load: (cam) => { viewControl.setPosition(cam) },
save: () => { return viewControl.getPosition(true) },
panTo: (x,y,z) => { tweenCamPan(x,y,z) },
top: (then) => { tweenCam({left: home, up: 0, panX, panY, panZ, then}) },
back: (then) => { tweenCam({left: PI, up: PI2, panX, panY, panZ, then}) },
home: (then) => { tweenCam({left: home, up, panX, panY, panZ, then}) },
front: (then) => { tweenCam({left: 0, up: PI2, panX, panY, panZ, then}) },
right: (then) => { tweenCam({left: PI2, up: PI2, panX, panY, panZ, then}) },
left: (then) => { tweenCam({left: -PI2, up: PI2, panX, panY, panZ, then}) },
reset: () => { viewControl.reset(); requestRefresh() },
load: (cam) => { viewControl.setPosition(cam) },
save: () => { return viewControl.getPosition(true) },
panTo: (x,y,z) => { tweenCamPan(x,y,z) },
setZoom: (r,v) => { viewControl.setZoom(r,v) },
setCtrl: (name) => {
if (name === 'onshape') {
@ -957,27 +962,24 @@
},
getFPS: () => { return fps },
getFocus: () => { return viewControl.getTarget() },
setFocus: (v) => {
viewControl.setTarget(v);
refresh();
},
setFocus: (v) => { viewControl.setTarget(v); refresh() },
setHome: (r,u) => {
home = r || 0;
up = u || PI4;
},
spin: (then, count) => {
Space.view.front(() => {
Space.view.right(() => {
Space.view.back(() => {
Space.view.left(() => {
if (--count > 0) {
Space.view.spin(then, count);
} else {
Space.view.front(then);
}
});
});
});
Space.view.right(() => {
Space.view.back(() => {
Space.view.left(() => {
if (--count > 0) {
Space.view.spin(then, count);
} else {
Space.view.front(then);
}
});
});
});
});
}
},
@ -991,25 +993,14 @@
onHover: (f) => { mouseHover = f }
},
useDefaultKeys: (b) => {
defaultKeys = b;
tween: {
setTime: (t) => { tweenTime = t || 500 },
setDelay: (d) => { tweenDelay = d || 20 }
},
selectRecurse: (b) => {
selectRecurse = b;
},
setTweenTime: (t) => {
tweenTime = t || 500;
},
setTweenDelay: (d) => {
tweenDelay = d || 20;
},
objects: () => {
return WC;
},
useDefaultKeys: (b) => { defaultKeys = b },
selectRecurse: (b) => { selectRecurse = b },
objects: () => { return WORLD.children },
screenshot: (format, options) => {
return renderer.domElement.toDataURL(format || "image/png", options);