meshEmitterGridComponent.tsx 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import * as React from "react";
  2. import { Observable } from "babylonjs/Misc/observable";
  3. import { GlobalState } from '../../../../globalState';
  4. import { PropertyChangedEvent } from '../../../../propertyChangedEvent';
  5. import { LockObject } from '../lockObject';
  6. import { Vector3LineComponent } from '../../../lines/vector3LineComponent';
  7. import { MeshParticleEmitter } from 'babylonjs/Particles/EmitterTypes/meshParticleEmitter';
  8. import { CheckBoxLineComponent } from '../../../lines/checkBoxLineComponent';
  9. import { MeshPickerComponent } from '../../../lines/meshPickerComponent';
  10. import { Scene } from 'babylonjs/scene';
  11. interface IMeshEmitterGridComponentProps {
  12. globalState: GlobalState;
  13. emitter: MeshParticleEmitter,
  14. scene: Scene,
  15. lockObject: LockObject,
  16. onSelectionChangedObservable?: Observable<any>,
  17. replaySourceReplacement?: string,
  18. onPropertyChangedObservable?: Observable<PropertyChangedEvent>
  19. }
  20. export class MeshEmitterGridComponent extends React.Component<IMeshEmitterGridComponentProps> {
  21. constructor(props: IMeshEmitterGridComponentProps) {
  22. super(props);
  23. }
  24. render() {
  25. let emitter = this.props.emitter;
  26. return (
  27. <>
  28. <MeshPickerComponent replaySourceReplacement={this.props.replaySourceReplacement} globalState={this.props.globalState} label="Source" scene={this.props.scene}
  29. onPropertyChangedObservable={this.props.onPropertyChangedObservable}
  30. target={this.props.emitter} property="mesh"/>
  31. {
  32. !emitter.useMeshNormalsForDirection &&
  33. <Vector3LineComponent replaySourceReplacement={this.props.replaySourceReplacement} label="Direction 1" target={emitter} propertyName="direction1"
  34. onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  35. }
  36. {
  37. !emitter.useMeshNormalsForDirection &&
  38. <Vector3LineComponent replaySourceReplacement={this.props.replaySourceReplacement} label="Direction 2" target={emitter} propertyName="direction2"
  39. onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  40. }
  41. <CheckBoxLineComponent replaySourceReplacement={this.props.replaySourceReplacement} label="Use normals for direction" target={emitter} propertyName="useMeshNormalsForDirection"
  42. onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  43. </>
  44. );
  45. }
  46. }