Viewport.Selector.js 853 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. class Selector {
  2. constructor( editor ) {
  3. const signals = editor.signals;
  4. this.editor = editor;
  5. this.signals = signals;
  6. // signals
  7. signals.intersectionsDetected.add( ( intersects ) => {
  8. if ( intersects.length > 0 ) {
  9. const object = intersects[ 0 ].object;
  10. if ( object.userData.object !== undefined ) {
  11. // helper
  12. this.select( object.userData.object );
  13. } else {
  14. this.select( object );
  15. }
  16. } else {
  17. this.select( null );
  18. }
  19. } );
  20. }
  21. select( object ) {
  22. if ( this.editor.selected === object ) return;
  23. let uuid = null;
  24. if ( object !== null ) {
  25. uuid = object.uuid;
  26. }
  27. this.editor.selected = object;
  28. this.editor.config.setKey( 'selected', uuid );
  29. this.signals.objectSelected.dispatch( object );
  30. }
  31. deselect() {
  32. this.select( null );
  33. }
  34. }
  35. export { Selector };