You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
1.8 KiB
JavaScript
93 lines
1.8 KiB
JavaScript
import { UIPanel, UISelect } from './libs/ui.js';
|
|
|
|
function ViewportControls( editor ) {
|
|
|
|
const signals = editor.signals;
|
|
|
|
const container = new UIPanel();
|
|
container.setPosition( 'absolute' );
|
|
container.setRight( '10px' );
|
|
container.setTop( '10px' );
|
|
container.setColor( '#ffffff' );
|
|
|
|
// camera
|
|
|
|
const cameraSelect = new UISelect();
|
|
cameraSelect.setMarginLeft( '10px' );
|
|
cameraSelect.setMarginRight( '10px' );
|
|
cameraSelect.onChange( function () {
|
|
|
|
editor.setViewportCamera( this.getValue() );
|
|
|
|
} );
|
|
container.add( cameraSelect );
|
|
|
|
signals.cameraAdded.add( update );
|
|
signals.cameraRemoved.add( update );
|
|
signals.objectChanged.add( function ( object ) {
|
|
|
|
if ( object.isCamera ) {
|
|
|
|
update();
|
|
|
|
}
|
|
|
|
} );
|
|
|
|
// shading
|
|
|
|
const shadingSelect = new UISelect();
|
|
shadingSelect.setOptions( { 'realistic': 'realistic', 'solid': 'solid', 'normals': 'normals', 'wireframe': 'wireframe' } );
|
|
shadingSelect.setValue( 'solid' );
|
|
shadingSelect.onChange( function () {
|
|
|
|
editor.setViewportShading( this.getValue() );
|
|
|
|
} );
|
|
container.add( shadingSelect );
|
|
|
|
signals.editorCleared.add( function () {
|
|
|
|
editor.setViewportCamera( editor.camera.uuid );
|
|
|
|
shadingSelect.setValue( 'solid' );
|
|
editor.setViewportShading( shadingSelect.getValue() );
|
|
|
|
} );
|
|
|
|
signals.cameraResetted.add( update );
|
|
|
|
update();
|
|
|
|
//
|
|
|
|
function update() {
|
|
|
|
const options = {};
|
|
|
|
const cameras = editor.cameras;
|
|
|
|
for ( const key in cameras ) {
|
|
|
|
const camera = cameras[ key ];
|
|
options[ camera.uuid ] = camera.name;
|
|
|
|
}
|
|
|
|
cameraSelect.setOptions( options );
|
|
|
|
const selectedCamera = ( editor.viewportCamera.uuid in options )
|
|
? editor.viewportCamera
|
|
: editor.camera;
|
|
|
|
cameraSelect.setValue( selectedCamera.uuid );
|
|
editor.setViewportCamera( selectedCamera.uuid );
|
|
|
|
}
|
|
|
|
return container;
|
|
|
|
}
|
|
|
|
export { ViewportControls };
|