TimerEditor.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { NumberInput, LabelElement, Element, ButtonInput } from 'flow';
  2. import { BaseNodeEditor } from '../BaseNodeEditor.js';
  3. import { timerLocal } from 'three/tsl';
  4. export class TimerEditor extends BaseNodeEditor {
  5. constructor() {
  6. const node = timerLocal();
  7. super( 'Timer', node, 200 );
  8. this.title.setIcon( 'ti ti-clock' );
  9. const updateField = () => {
  10. field.setValue( node.value.toFixed( 3 ) );
  11. };
  12. const field = new NumberInput().onChange( () => {
  13. node.value = field.getValue();
  14. } );
  15. const scaleField = new NumberInput( 1 ).onChange( () => {
  16. node.scale = scaleField.getValue();
  17. } );
  18. const moreElement = new Element().add( new ButtonInput( 'Reset' ).onClick( () => {
  19. node.value = 0;
  20. updateField();
  21. } ) ).setSerializable( false );
  22. this.add( new Element().add( field ).setSerializable( false ) )
  23. .add( new LabelElement( 'Speed' ).add( scaleField ) )
  24. .add( moreElement );
  25. // extends node
  26. node._update = node.update;
  27. node.update = function ( ...params ) {
  28. this._update( ...params );
  29. updateField();
  30. };
  31. }
  32. }