commonPostProcessPropertyGridComponent.tsx 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import * as React from "react";
  2. import { Observable } from "babylonjs/Misc/observable";
  3. import { PropertyChangedEvent } from "../../../../propertyChangedEvent";
  4. import { CheckBoxLineComponent } from "../../../../../sharedUiComponents/lines/checkBoxLineComponent";
  5. import { LineContainerComponent } from "../../../../../sharedUiComponents/lines/lineContainerComponent";
  6. import { TextLineComponent } from "../../../../../sharedUiComponents/lines/textLineComponent";
  7. import { LockObject } from "../../../../../sharedUiComponents/tabs/propertyGrids/lockObject";
  8. import { PostProcess } from 'babylonjs/PostProcesses/postProcess';
  9. import { Color3LineComponent } from '../../../../../sharedUiComponents/lines/color3LineComponent';
  10. import { SliderLineComponent } from '../../../../../sharedUiComponents/lines/sliderLineComponent';
  11. import { GlobalState } from '../../../../globalState';
  12. import { ButtonLineComponent } from '../../../../../sharedUiComponents/lines/buttonLineComponent';
  13. import { TextInputLineComponent } from '../../../../../sharedUiComponents/lines/textInputLineComponent';
  14. interface ICommonPostProcessPropertyGridComponentProps {
  15. globalState: GlobalState;
  16. postProcess: PostProcess;
  17. lockObject: LockObject;
  18. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  19. }
  20. export class CommonPostProcessPropertyGridComponent extends React.Component<ICommonPostProcessPropertyGridComponentProps> {
  21. constructor(props: ICommonPostProcessPropertyGridComponentProps) {
  22. super(props);
  23. }
  24. render() {
  25. const postProcess = this.props.postProcess;
  26. return (
  27. <div>
  28. <LineContainerComponent title="GENERAL">
  29. <TextLineComponent label="Class" value={postProcess.getClassName()} />
  30. <TextInputLineComponent lockObject={this.props.lockObject} label="Name" target={postProcess} propertyName="name" onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
  31. {
  32. postProcess.width &&
  33. <TextLineComponent label="Width" value={postProcess.width.toString()} />
  34. }
  35. {
  36. postProcess.height &&
  37. <TextLineComponent label="Height" value={postProcess.height.toString()} />
  38. }
  39. <CheckBoxLineComponent label="Auto clear" target={postProcess} propertyName="autoClear" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  40. {
  41. postProcess.clearColor &&
  42. <Color3LineComponent label="Clear color" target={postProcess} propertyName="clearColor" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  43. }
  44. <CheckBoxLineComponent label="Pixel perfect" target={postProcess} propertyName="enablePixelPerfectMode" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  45. <CheckBoxLineComponent label="Fullscreen viewport" target={postProcess} propertyName="forceFullscreenViewport" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  46. <SliderLineComponent label="Samples" target={postProcess} propertyName="samples" minimum={1} maximum={8} step={1} decimalCount={0} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  47. <ButtonLineComponent label="Dispose" onClick={() => {
  48. postProcess.dispose();
  49. this.props.globalState.onSelectionChangedObservable.notifyObservers(null);
  50. }} />
  51. </LineContainerComponent>
  52. </div>
  53. );
  54. }
  55. }