directionalLightPropertyGridComponent.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import * as React from "react";
  2. import { Observable } from "babylonjs/Misc/observable";
  3. import { DirectionalLight } from "babylonjs/Lights/directionalLight";
  4. import { PropertyChangedEvent } from "../../../../propertyChangedEvent";
  5. import { CommonLightPropertyGridComponent } from "./commonLightPropertyGridComponent";
  6. import { LineContainerComponent } from "../../../lineContainerComponent";
  7. import { Color3LineComponent } from "../../../../../sharedUiComponents/lines/color3LineComponent";
  8. import { Vector3LineComponent } from "../../../../../sharedUiComponents/lines/vector3LineComponent";
  9. import { CommonShadowLightPropertyGridComponent } from "./commonShadowLightPropertyGridComponent";
  10. import { LockObject } from "../../../../../sharedUiComponents/tabs/propertyGrids/lockObject";
  11. import { GlobalState } from '../../../../globalState';
  12. import { CheckBoxLineComponent } from "../../../../../sharedUiComponents/lines/checkBoxLineComponent"
  13. import { ShadowGenerator } from 'babylonjs/Lights/Shadows/shadowGenerator';
  14. import { CascadedShadowGenerator } from 'babylonjs/Lights/Shadows/cascadedShadowGenerator';
  15. interface IDirectionalLightPropertyGridComponentProps {
  16. globalState: GlobalState,
  17. light: DirectionalLight,
  18. lockObject: LockObject,
  19. onPropertyChangedObservable?: Observable<PropertyChangedEvent>
  20. }
  21. export class DirectionalLightPropertyGridComponent extends React.Component<IDirectionalLightPropertyGridComponentProps> {
  22. constructor(props: IDirectionalLightPropertyGridComponentProps) {
  23. super(props);
  24. }
  25. render() {
  26. const light = this.props.light;
  27. const generator = light.getShadowGenerator() as (ShadowGenerator | CascadedShadowGenerator) || null;
  28. const hideAutoCalcShadowZBounds = generator instanceof CascadedShadowGenerator;
  29. return (
  30. <div className="pane">
  31. <CommonLightPropertyGridComponent globalState={this.props.globalState} lockObject={this.props.lockObject} light={light} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  32. <LineContainerComponent globalState={this.props.globalState} title="SETUP">
  33. <Color3LineComponent label="Diffuse" target={light} propertyName="diffuse" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  34. <Color3LineComponent label="Specular" target={light} propertyName="specular" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  35. <Vector3LineComponent label="Position" target={light} propertyName="position" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  36. <Vector3LineComponent label="Direction" target={light} propertyName="direction" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  37. { !hideAutoCalcShadowZBounds &&
  38. <CheckBoxLineComponent label="Auto Calc Shadow ZBounds" target={light} propertyName="autoCalcShadowZBounds" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  39. }
  40. </LineContainerComponent>
  41. <CommonShadowLightPropertyGridComponent globalState={this.props.globalState} lockObject={this.props.lockObject} light={light} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  42. </div>
  43. );
  44. }
  45. }