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.
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
import { UITabbedPanel } from './libs/ui.js';
|
|
|
|
import { SidebarObject } from './Sidebar.Object.js';
|
|
import { SidebarGeometry } from './Sidebar.Geometry.js';
|
|
import { SidebarMaterial } from './Sidebar.Material.js';
|
|
import { SidebarScript } from './Sidebar.Script.js';
|
|
|
|
function SidebarProperties( editor ) {
|
|
|
|
const strings = editor.strings;
|
|
|
|
const container = new UITabbedPanel();
|
|
container.setId( 'properties' );
|
|
|
|
container.addTab( 'objectTab', strings.getKey( 'sidebar/properties/object' ), new SidebarObject( editor ) );
|
|
container.addTab( 'geometryTab', strings.getKey( 'sidebar/properties/geometry' ), new SidebarGeometry( editor ) );
|
|
container.addTab( 'materialTab', strings.getKey( 'sidebar/properties/material' ), new SidebarMaterial( editor ) );
|
|
container.addTab( 'scriptTab', strings.getKey( 'sidebar/properties/script' ), new SidebarScript( editor ) );
|
|
container.select( 'objectTab' );
|
|
|
|
function getTabByTabId( tabs, tabId ) {
|
|
|
|
return tabs.find( function ( tab ) {
|
|
|
|
return tab.dom.id === tabId;
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
const geometryTab = getTabByTabId( container.tabs, 'geometryTab' );
|
|
const materialTab = getTabByTabId( container.tabs, 'materialTab' );
|
|
const scriptTab = getTabByTabId( container.tabs, 'scriptTab' );
|
|
|
|
function toggleTabs( object ) {
|
|
|
|
container.setHidden( object === null );
|
|
|
|
if ( object === null ) return;
|
|
|
|
geometryTab.setHidden( ! object.geometry );
|
|
|
|
materialTab.setHidden( ! object.material );
|
|
|
|
scriptTab.setHidden( object === editor.camera );
|
|
|
|
// set active tab
|
|
|
|
if ( container.selected === 'geometryTab' ) {
|
|
|
|
container.select( geometryTab.isHidden() ? 'objectTab' : 'geometryTab' );
|
|
|
|
} else if ( container.selected === 'materialTab' ) {
|
|
|
|
container.select( materialTab.isHidden() ? 'objectTab' : 'materialTab' );
|
|
|
|
} else if ( container.selected === 'scriptTab' ) {
|
|
|
|
container.select( scriptTab.isHidden() ? 'objectTab' : 'scriptTab' );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
editor.signals.objectSelected.add( toggleTabs );
|
|
|
|
toggleTabs( editor.selected );
|
|
|
|
return container;
|
|
|
|
}
|
|
|
|
export { SidebarProperties };
|