SideBar.Properties.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. var Properties = function ( signals ) {
  2. var selected = null;
  3. var container = new UI.Panel();
  4. container.setDisplay( 'none' );
  5. container.setPadding( '8px' );
  6. container.setBorderTop( '1px solid #ccc' );
  7. container.add( new UI.Text().setText( 'PROPERTIES' ).setColor( '#666' ) );
  8. container.add( new UI.Break() );
  9. container.add( new UI.Break() );
  10. container.add( new UI.Text().setText( 'position' ).setColor( '#666' ) );
  11. var positionX = new UI.FloatNumber( 'absolute' ).setLeft( '90px' ).onChanged( update );
  12. var positionY = new UI.FloatNumber( 'absolute' ).setLeft( '160px' ).onChanged( update );
  13. var positionZ = new UI.FloatNumber( 'absolute' ).setLeft( '230px' ).onChanged( update );
  14. container.add( positionX, positionY, positionZ );
  15. container.add( new UI.HorizontalRule() );
  16. container.add( new UI.Text().setText( 'rotation' ).setColor( '#666' ) );
  17. var rotationX = new UI.FloatNumber( 'absolute' ).setLeft( '90px' ).onChanged( update );
  18. var rotationY = new UI.FloatNumber( 'absolute' ).setLeft( '160px' ).onChanged( update );
  19. var rotationZ = new UI.FloatNumber( 'absolute' ).setLeft( '230px' ).onChanged( update );
  20. container.add( rotationX, rotationY, rotationZ );
  21. container.add( new UI.HorizontalRule() );
  22. container.add( new UI.Text().setText( 'scale' ).setColor( '#666' ) );
  23. var scaleX = new UI.FloatNumber( 'absolute' ).setValue( 1 ).setLeft( '90px' ).onChanged( update );
  24. var scaleY = new UI.FloatNumber( 'absolute' ).setValue( 1 ).setLeft( '160px' ).onChanged( update );
  25. var scaleZ = new UI.FloatNumber( 'absolute' ).setValue( 1 ).setLeft( '230px' ).onChanged( update );
  26. container.add( scaleX, scaleY, scaleZ );
  27. container.add( new UI.Break(), new UI.Break(), new UI.Break() );
  28. // Geometry
  29. container.add( new UI.Text().setText( 'GEOMETRY' ).setColor( '#666' ) );
  30. container.add( new UI.Break(), new UI.Break(), new UI.Break() );
  31. // Material
  32. container.add( new UI.Text().setText( 'MATERIAL' ).setColor( '#666' ) );
  33. container.add( new UI.Break(), new UI.Break(), new UI.Break() );
  34. // Events
  35. function update() {
  36. if ( selected ) {
  37. selected.position.x = positionX.getValue();
  38. selected.position.y = positionY.getValue();
  39. selected.position.z = positionZ.getValue();
  40. selected.rotation.x = rotationX.getValue();
  41. selected.rotation.y = rotationY.getValue();
  42. selected.rotation.z = rotationZ.getValue();
  43. selected.scale.x = scaleX.getValue();
  44. selected.scale.y = scaleY.getValue();
  45. selected.scale.z = scaleZ.getValue();
  46. signals.objectChanged.dispatch( selected );
  47. }
  48. }
  49. signals.objectSelected.add( function ( object ) {
  50. selected = object;
  51. if ( object ) {
  52. container.setDisplay( 'block' );
  53. positionX.setValue( object.position.x );
  54. positionY.setValue( object.position.y );
  55. positionZ.setValue( object.position.z );
  56. rotationX.setValue( object.rotation.x );
  57. rotationY.setValue( object.rotation.y );
  58. rotationZ.setValue( object.rotation.z );
  59. scaleX.setValue( object.scale.x );
  60. scaleY.setValue( object.scale.y );
  61. scaleZ.setValue( object.scale.z );
  62. } else {
  63. container.setDisplay( 'none' );
  64. }
  65. } );
  66. return container;
  67. }