import * as React from "react"; import { Observable } from "babylonjs/Misc/observable"; import { IShadowLight } from "babylonjs/Lights/shadowLight"; import { PropertyChangedEvent } from "../../../../propertyChangedEvent"; import { LineContainerComponent } from "../../../lineContainerComponent"; import { CheckBoxLineComponent } from "../../../lines/checkBoxLineComponent"; import { FloatLineComponent } from "../../../lines/floatLineComponent"; import { LockObject } from "../lockObject"; import { GlobalState } from '../../../../globalState'; import { OptionsLineComponent } from '../../../lines/optionsLineComponent'; import { ShadowGenerator } from 'babylonjs/Lights/Shadows/shadowGenerator'; import { SliderLineComponent } from '../../../lines/sliderLineComponent'; interface ICommonShadowLightPropertyGridComponentProps { globalState: GlobalState, light: IShadowLight, lockObject: LockObject, onPropertyChangedObservable?: Observable } export class CommonShadowLightPropertyGridComponent extends React.Component { constructor(props: ICommonShadowLightPropertyGridComponentProps) { super(props); } render() { const light = this.props.light; const generator = light.getShadowGenerator() as ShadowGenerator || null; var blurModeOptions = [ { label: "None", value: ShadowGenerator.FILTER_NONE }, { label: "PCF", value: ShadowGenerator.FILTER_PCF }, { label: "PCSS", value: ShadowGenerator.FILTER_PCSS }, { label: "Poisson", value: ShadowGenerator.FILTER_POISSONSAMPLING }, { label: "Exponential", value: ShadowGenerator.FILTER_EXPONENTIALSHADOWMAP }, { label: "Blurred exponential", value: ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP }, { label: "Close exponential", value: ShadowGenerator.FILTER_CLOSEEXPONENTIALSHADOWMAP }, { label: "Blurred close exponential", value: ShadowGenerator.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP }, ]; var filteringQualityOptions = [ { label: "Low", value: ShadowGenerator.QUALITY_LOW }, { label: "Medium", value: ShadowGenerator.QUALITY_MEDIUM }, { label: "High", value: ShadowGenerator.QUALITY_HIGH } ]; let filter = generator ? generator.filter : 0; return (
{ generator !== null && { this.forceUpdate(); }} target={generator} propertyName="filter" onPropertyChangedObservable={this.props.onPropertyChangedObservable} /> { (filter === ShadowGenerator.FILTER_PCF || filter === ShadowGenerator.FILTER_PCSS) && { this.forceUpdate(); }} target={generator} propertyName="filteringQuality" onPropertyChangedObservable={this.props.onPropertyChangedObservable} /> } { (filter === ShadowGenerator.FILTER_PCSS) && } { (filter === ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP || filter === ShadowGenerator.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP) && this.forceUpdate()} onPropertyChangedObservable={this.props.onPropertyChangedObservable} /> } { (filter === ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP || filter === ShadowGenerator.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP) && !generator.useKernelBlur && } { (filter === ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP || filter === ShadowGenerator.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP) && generator.useKernelBlur && } { (filter === ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP || filter === ShadowGenerator.FILTER_EXPONENTIALSHADOWMAP) && } { (filter === ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP || filter === ShadowGenerator.FILTER_EXPONENTIALSHADOWMAP) && } }
); } }