add setFocus() and multi-use 'v' key to refocus on center of all widgets

This commit is contained in:
Stewart Allen 2021-01-22 10:41:04 -05:00
commit cbc9fb8da3
4 changed files with 48 additions and 8 deletions

View file

@ -414,6 +414,9 @@
API.show.local(); API.show.local();
break; break;
case cca('v'): // toggle single slice view mode case cca('v'): // toggle single slice view mode
if (API.view.get() === VIEWS.ARRANGE) {
API.space.set_focus();
}
if (API.var.layer_hi == API.var.layer_lo) { if (API.var.layer_hi == API.var.layer_lo) {
API.var.layer_lo = 0; API.var.layer_lo = 0;
} else { } else {

View file

@ -327,7 +327,8 @@
reload: reload, reload: reload,
restore: restoreWorkspace, restore: restoreWorkspace,
clear: clearWorkspace, clear: clearWorkspace,
save: saveWorkspace save: saveWorkspace,
set_focus: setFocus
}, },
tweak, tweak,
util: { util: {
@ -368,6 +369,25 @@
work: KIRI.work work: KIRI.work
}; };
function setFocus(widgets) {
if (widgets === undefined) {
widgets = WIDGETS;
} else if (!Array.isArray) {
widgets = [ widgets ];
}
let pos = { x:0, y:0, z:0 };
for (let widget of widgets) {
pos.x += widget.track.pos.x;
pos.y += widget.track.pos.y;
pos.z += widget.track.pos.z;
}
pos.x /= widgets.length;
pos.y /= widgets.length;
pos.z /= widgets.length;
SPACE.platform.setCenter(pos.x, -pos.y, pos.z);
SPACE.view.setFocus(new THREE.Vector3(pos.x, pos.z, -pos.y));
}
function reload() { function reload() {
API.event.emit('reload'); API.event.emit('reload');
do_reload(100); do_reload(100);

View file

@ -181,6 +181,15 @@ MOTO.CTRL = function (object, domElement, notify, slider) {
} }
}; };
this.getTarget = function() {
return this.target;
};
this.setTarget = function(t) {
this.target = t;
this.target0 = this.target.clone();
}
function isValue(v) { function isValue(v) {
return v !== null && v !== undefined; return v !== null && v !== undefined;
} }

View file

@ -16,7 +16,9 @@
PI2 = PI / 2, PI2 = PI / 2,
PI4 = PI / 4, PI4 = PI / 4,
ROUND = Math.round, ROUND = Math.round,
panX = 0,
panY = 0, panY = 0,
panZ = 0,
gridZOff = 0, gridZOff = 0,
platformZOff = 0, platformZOff = 0,
perspective = 35, perspective = 35,
@ -896,6 +898,7 @@
add: function(o) { WORLD.add(o) }, add: function(o) { WORLD.add(o) },
remove: function(o) { WORLD.remove(o) }, remove: function(o) { WORLD.remove(o) },
setMaxZ: function(z) { panY = z / 2 }, setMaxZ: function(z) { panY = z / 2 },
setCenter: function(x,y,z) { panX = x; panY = z, panZ = y },
isHidden: function() { return !showPlatform }, isHidden: function() { return !showPlatform },
setHidden: function(b) { showPlatform = !b; platform.visible = !b }, setHidden: function(b) { showPlatform = !b; platform.visible = !b },
setHiding: function(b) { hidePlatformBelow = b }, setHiding: function(b) { hidePlatformBelow = b },
@ -935,12 +938,12 @@
}, },
view: { view: {
top: function() { tweenCam({left: 0, up: 0, panX: 0, panY: panY, panZ: 0}) }, top: function() { tweenCam({left: 0, up: 0, panX, panY, panZ}) },
back: function() { tweenCam({left: PI, up: PI2, panX: 0, panY: panY, panZ: 0}) }, back: function() { tweenCam({left: PI, up: PI2, panX, panY, panZ}) },
home: function() { tweenCam({left: 0, up: PI4, panX: 0, panY: panY, panZ: 0}) }, home: function() { tweenCam({left: 0, up: PI4, panX, panY, panZ}) },
front: function() { tweenCam({left: 0, up: PI2, panX: 0, panY: panY, panZ: 0}) }, front: function() { tweenCam({left: 0, up: PI2, panX, panY, panZ}) },
right: function() { tweenCam({left: PI2, up: PI2, panX: 0, panY: panY, panZ: 0}) }, right: function() { tweenCam({left: PI2, up: PI2, panX, panY, panZ}) },
left: function() { tweenCam({left: -PI2, up: PI2, panX: 0, panY: panY, panZ: 0}) }, left: function() { tweenCam({left: -PI2, up: PI2, panX, panY, panZ}) },
reset: function() { viewControl.reset(); requestRefresh() }, reset: function() { viewControl.reset(); requestRefresh() },
load: function(cam) { viewControl.setPosition(cam) }, load: function(cam) { viewControl.setPosition(cam) },
save: function() { return viewControl.getPosition(true) }, save: function() { return viewControl.getPosition(true) },
@ -953,7 +956,12 @@
viewControl.setMouse(viewControl.mouseDefault); viewControl.setMouse(viewControl.mouseDefault);
} }
}, },
getFPS: function() { return fps } getFPS: function() { return fps },
getFocus: function() { return viewControl.getTarget() },
setFocus: function(v) {
viewControl.setTarget(v);
refresh();
},
}, },
mouse: { mouse: {