Skip to content
Snippets Groups Projects
Commit 0240e547 authored by dsehnal's avatar dsehnal
Browse files

TrackballControlsParams.autoAdjustControls

parent 6a735d90
No related branches found
No related tags found
No related merge requests found
...@@ -455,6 +455,14 @@ namespace Canvas3D { ...@@ -455,6 +455,14 @@ namespace Canvas3D {
const boundingSphere = scene.boundingSphereVisible; const boundingSphere = scene.boundingSphereVisible;
const { center, radius } = boundingSphere; const { center, radius } = boundingSphere;
const autoAdjustControls = controls.props.autoAdjustMinMaxDistance;
if (autoAdjustControls.name === 'on') {
const minDistance = autoAdjustControls.params.minDistanceFactor * radius + autoAdjustControls.params.minDistancePadding;
const maxDistance = Math.max(autoAdjustControls.params.maxDistanceFactor * radius, autoAdjustControls.params.maxDistanceMin);
controls.setProps({ minDistance, maxDistance });
}
if (radius > 0) { if (radius > 0) {
const duration = nextCameraResetDuration === undefined ? p.cameraResetDurationMs : nextCameraResetDuration; const duration = nextCameraResetDuration === undefined ? p.cameraResetDurationMs : nextCameraResetDuration;
const focus = camera.getFocus(center, radius); const focus = camera.getFocus(center, radius);
......
...@@ -49,7 +49,21 @@ export const TrackballControlsParams = { ...@@ -49,7 +49,21 @@ export const TrackballControlsParams = {
minDistance: PD.Numeric(0.01, {}, { isHidden: true }), minDistance: PD.Numeric(0.01, {}, { isHidden: true }),
maxDistance: PD.Numeric(1e150, {}, { isHidden: true }), maxDistance: PD.Numeric(1e150, {}, { isHidden: true }),
bindings: PD.Value(DefaultTrackballBindings, { isHidden: true }) bindings: PD.Value(DefaultTrackballBindings, { isHidden: true }),
/**
* minDistance = minDistanceFactor * boundingSphere.radius + minDistancePadding
* maxDistance = max(maxDistanceFactor * boundingSphere.radius, maxDistanceMin)
*/
autoAdjustMinMaxDistance: PD.MappedStatic('on', {
off: PD.EmptyGroup(),
on: PD.Group({
minDistanceFactor: PD.Numeric(0),
minDistancePadding: PD.Numeric(5),
maxDistanceFactor: PD.Numeric(10),
maxDistanceMin: PD.Numeric(20)
})
}, { isHidden: true })
}; };
export type TrackballControlsProps = PD.Values<typeof TrackballControlsParams> export type TrackballControlsProps = PD.Values<typeof TrackballControlsParams>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment