Sidebar.Properties.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { UITabbedPanel } from './libs/ui.js';
  2. import { SidebarObject } from './Sidebar.Object.js';
  3. import { SidebarGeometry } from './Sidebar.Geometry.js';
  4. import { SidebarMaterial } from './Sidebar.Material.js';
  5. import { SidebarScript } from './Sidebar.Script.js';
  6. function SidebarProperties( editor ) {
  7. const strings = editor.strings;
  8. const container = new UITabbedPanel();
  9. container.setId( 'properties' );
  10. container.addTab( 'objectTab', strings.getKey( 'sidebar/properties/object' ), new SidebarObject( editor ) );
  11. container.addTab( 'geometryTab', strings.getKey( 'sidebar/properties/geometry' ), new SidebarGeometry( editor ) );
  12. container.addTab( 'materialTab', strings.getKey( 'sidebar/properties/material' ), new SidebarMaterial( editor ) );
  13. container.addTab( 'scriptTab', strings.getKey( 'sidebar/properties/script' ), new SidebarScript( editor ) );
  14. container.select( 'objectTab' );
  15. function getTabByTabId( tabs, tabId ) {
  16. return tabs.find( function ( tab ) {
  17. return tab.dom.id === tabId;
  18. } );
  19. }
  20. const geometryTab = getTabByTabId( container.tabs, 'geometryTab' );
  21. const materialTab = getTabByTabId( container.tabs, 'materialTab' );
  22. const scriptTab = getTabByTabId( container.tabs, 'scriptTab' );
  23. function toggleTabs( object ) {
  24. container.setHidden( object === null );
  25. if ( object === null ) return;
  26. geometryTab.setHidden( ! object.geometry );
  27. materialTab.setHidden( ! object.material );
  28. scriptTab.setHidden( object === editor.camera );
  29. // set active tab
  30. if ( container.selected === 'geometryTab' ) {
  31. container.select( geometryTab.isHidden() ? 'objectTab' : 'geometryTab' );
  32. } else if ( container.selected === 'materialTab' ) {
  33. container.select( materialTab.isHidden() ? 'objectTab' : 'materialTab' );
  34. } else if ( container.selected === 'scriptTab' ) {
  35. container.select( scriptTab.isHidden() ? 'objectTab' : 'scriptTab' );
  36. }
  37. }
  38. editor.signals.objectSelected.add( toggleTabs );
  39. toggleTabs( editor.selected );
  40. return container;
  41. }
  42. export { SidebarProperties };