Sidebar.Properties.Object3D.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. Sidebar.Properties.Object3D = function ( signals ) {
  2. var container = new UI.Panel();
  3. container.setDisplay( 'none' );
  4. container.add( new UI.Text().setValue( 'OBJECT' ).setColor( '#666' ) );
  5. container.add( new UI.Break(), new UI.Break() );
  6. // name
  7. var objectNameRow = new UI.Panel();
  8. var objectName = new UI.Text( 'absolute' ).setLeft( '90px' ).setColor( '#444' );
  9. objectNameRow.add( new UI.Text().setValue( 'Name' ).setColor( '#666' ) );
  10. objectNameRow.add( objectName );
  11. container.add( objectNameRow );
  12. // position
  13. var objectPositionRow = new UI.Panel();
  14. var objectPositionX = new UI.Number( 'absolute' ).setLeft( '90px' ).setWidth( '50px' ).onChange( update );
  15. var objectPositionY = new UI.Number( 'absolute' ).setLeft( '150px' ).setWidth( '50px' ).onChange( update );
  16. var objectPositionZ = new UI.Number( 'absolute' ).setLeft( '210px' ).setWidth( '50px' ).onChange( update );
  17. objectPositionRow.add( new UI.HorizontalRule(), new UI.Text().setValue( 'Position' ).setColor( '#666' ) );
  18. objectPositionRow.add( objectPositionX, objectPositionY, objectPositionZ );
  19. container.add( objectPositionRow );
  20. // rotation
  21. var objectRotationRow = new UI.Panel();
  22. var objectRotationX = new UI.Number( 'absolute' ).setLeft( '90px' ).setWidth( '50px' ).onChange( update );
  23. var objectRotationY = new UI.Number( 'absolute' ).setLeft( '150px' ).setWidth( '50px' ).onChange( update );
  24. var objectRotationZ = new UI.Number( 'absolute' ).setLeft( '210px' ).setWidth( '50px' ).onChange( update );
  25. objectRotationRow.add( new UI.HorizontalRule(), new UI.Text().setValue( 'Rotation' ).setColor( '#666' ) );
  26. objectRotationRow.add( objectRotationX, objectRotationY, objectRotationZ );
  27. container.add( objectRotationRow );
  28. // scale
  29. var objectScaleRow = new UI.Panel();
  30. var objectScaleX = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '90px' ).setWidth( '50px' ).onChange( update );
  31. var objectScaleY = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '150px' ).setWidth( '50px' ).onChange( update );
  32. var objectScaleZ = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '210px' ).setWidth( '50px' ).onChange( update );
  33. objectScaleRow.add( new UI.HorizontalRule(), new UI.Text().setValue( 'Scale' ).setColor( '#666' ) );
  34. objectScaleRow.add( objectScaleX, objectScaleY, objectScaleZ );
  35. container.add( objectScaleRow );
  36. // visible
  37. var objectVisibleRow = new UI.Panel();
  38. var objectVisible = new UI.Boolean( 'absolute' ).setLeft( '90px' ).setWidth( '50px' ).onChange( update );
  39. objectVisibleRow.add( new UI.HorizontalRule(), new UI.Text().setValue( 'Visible' ).setColor( '#666' ) );
  40. objectVisibleRow.add( objectVisible );
  41. container.add( objectVisibleRow );
  42. container.add( new UI.Break(), new UI.Break() );
  43. //
  44. var selected = null;
  45. function update() {
  46. if ( selected ) {
  47. selected.position.x = objectPositionX.getValue();
  48. selected.position.y = objectPositionY.getValue();
  49. selected.position.z = objectPositionZ.getValue();
  50. selected.rotation.x = objectRotationX.getValue();
  51. selected.rotation.y = objectRotationY.getValue();
  52. selected.rotation.z = objectRotationZ.getValue();
  53. selected.scale.x = objectScaleX.getValue();
  54. selected.scale.y = objectScaleY.getValue();
  55. selected.scale.z = objectScaleZ.getValue();
  56. selected.visible = objectVisible.getValue();
  57. signals.objectChanged.dispatch( selected );
  58. }
  59. }
  60. // events
  61. signals.objectSelected.add( function ( object ) {
  62. selected = object;
  63. if ( object ) {
  64. container.setDisplay( 'block' );
  65. objectName.setValue( object.name );
  66. objectPositionX.setValue( object.position.x );
  67. objectPositionY.setValue( object.position.y );
  68. objectPositionZ.setValue( object.position.z );
  69. objectRotationX.setValue( object.rotation.x );
  70. objectRotationY.setValue( object.rotation.y );
  71. objectRotationZ.setValue( object.rotation.z );
  72. objectScaleX.setValue( object.scale.x );
  73. objectScaleY.setValue( object.scale.y );
  74. objectScaleZ.setValue( object.scale.z );
  75. objectVisible.setValue( object.visible );
  76. } else {
  77. container.setDisplay( 'none' );
  78. }
  79. } );
  80. return container;
  81. }