soundPropertyGridComponent.tsx 5.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import * as React from "react";
  2. import { Observable } from "babylonjs/Misc/observable";
  3. import { PropertyChangedEvent } from "../../../../propertyChangedEvent";
  4. import { LineContainerComponent } from "../../../../../sharedUiComponents/lines/lineContainerComponent";
  5. import { TextLineComponent } from "../../../../../sharedUiComponents/lines/textLineComponent";
  6. import { LockObject } from "../../../../../sharedUiComponents/tabs/propertyGrids/lockObject";
  7. import { GlobalState } from '../../../../globalState';
  8. import { Sound } from 'babylonjs/Audio/sound';
  9. import { IExplorerExtensibilityGroup } from 'babylonjs/Debug/debugLayer';
  10. import { TextInputLineComponent } from '../../../../../sharedUiComponents/lines/textInputLineComponent';
  11. import { ButtonLineComponent } from '../../../../../sharedUiComponents/lines/buttonLineComponent';
  12. import { SliderLineComponent } from '../../../../../sharedUiComponents/lines/sliderLineComponent';
  13. import { CheckBoxLineComponent } from '../../../../../sharedUiComponents/lines/checkBoxLineComponent';
  14. interface ISoundPropertyGridComponentProps {
  15. globalState: GlobalState;
  16. sound: Sound;
  17. extensibilityGroups?: IExplorerExtensibilityGroup[];
  18. lockObject: LockObject;
  19. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  20. }
  21. export class SoundPropertyGridComponent extends React.Component<ISoundPropertyGridComponentProps> {
  22. constructor(props: ISoundPropertyGridComponentProps) {
  23. super(props);
  24. }
  25. render() {
  26. const sound = this.props.sound;
  27. return (
  28. <div className="pane">
  29. <LineContainerComponent title="GENERAL">
  30. <TextLineComponent label="Class" value={sound.getClassName()} />
  31. <TextInputLineComponent lockObject={this.props.lockObject} label="Name" target={sound} propertyName="name" onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
  32. <TextLineComponent label="Status" value={sound.isPaused ? "Paused" : (sound.isPlaying ? "Playing" : "Stopped")}/>
  33. {/* {
  34. postProcess.width &&
  35. <TextLineComponent label="Width" value={postProcess.width.toString()} />
  36. }
  37. {
  38. postProcess.height &&
  39. <TextLineComponent label="Height" value={postProcess.height.toString()} />
  40. }
  41. <CheckBoxLineComponent label="Auto clear" target={postProcess} propertyName="autoClear" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  42. {
  43. postProcess.clearColor &&
  44. <Color3LineComponent label="Clear color" target={postProcess} propertyName="clearColor" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  45. }
  46. <CheckBoxLineComponent label="Pixel perfect" target={postProcess} propertyName="enablePixelPerfectMode" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  47. <CheckBoxLineComponent label="Fullscreen viewport" target={postProcess} propertyName="forceFullscreenViewport" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  48. <SliderLineComponent label="Samples" target={postProcess} propertyName="samples" minimum={1} maximum={8} step={1} decimalCount={0} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  49. <ButtonLineComponent label="Dispose" onClick={() => {
  50. postProcess.dispose();
  51. this.props.globalState.onSelectionChangedObservable.notifyObservers(null);
  52. }} /> */}
  53. </LineContainerComponent>
  54. <LineContainerComponent title="COMMANDS">
  55. {
  56. sound.isPlaying &&
  57. <ButtonLineComponent label="Pause" onClick={() => {
  58. sound.pause();
  59. this.forceUpdate();
  60. }} />
  61. }
  62. {
  63. !sound.isPlaying &&
  64. <ButtonLineComponent label="Play" onClick={() => {
  65. sound.play();
  66. this.forceUpdate();
  67. }} />
  68. }
  69. <SliderLineComponent label="Samples"
  70. target={sound} directValue={sound.getVolume()}
  71. onChange={value => {
  72. sound.setVolume(value);
  73. this.forceUpdate();
  74. }}
  75. minimum={0} maximum={5} step={0.1} decimalCount={1}
  76. onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  77. <CheckBoxLineComponent label="Loop" target={sound} propertyName="loop" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  78. </LineContainerComponent>
  79. </div>
  80. );
  81. }
  82. }