import * as React from "react"; import { Observable } from "babylonjs/Misc/observable"; import { Material } from "babylonjs/Materials/material"; import { PBRMaterial } from "babylonjs/Materials/PBR/pbrMaterial"; import { Constants } from "babylonjs/Engines/constants"; import { Engine } from "babylonjs/Engines/engine"; import { PropertyChangedEvent } from "../../../../propertyChangedEvent"; import { CheckBoxLineComponent } from "../../../lines/checkBoxLineComponent"; import { SliderLineComponent } from "../../../lines/sliderLineComponent"; import { LineContainerComponent } from "../../../lineContainerComponent"; import { TextLineComponent } from "../../../lines/textLineComponent"; import { OptionsLineComponent } from "../../../lines/optionsLineComponent"; import { LockObject } from "../lockObject"; import { GlobalState } from '../../../../globalState'; import { CustomPropertyGridComponent } from '../customPropertyGridComponent'; import { ButtonLineComponent } from '../../../lines/buttonLineComponent'; interface ICommonMaterialPropertyGridComponentProps { globalState: GlobalState; material: Material; lockObject: LockObject; onPropertyChangedObservable?: Observable; } export class CommonMaterialPropertyGridComponent extends React.Component { constructor(props: ICommonMaterialPropertyGridComponentProps) { super(props); } render() { const material = this.props.material; var orientationOptions = [ { label: "Clockwise", value: Material.ClockWiseSideOrientation }, { label: "Counterclockwise", value: Material.CounterClockWiseSideOrientation } ]; var transparencyModeOptions = [ { label: "Opaque", value: PBRMaterial.PBRMATERIAL_OPAQUE }, { label: "Alpha test", value: PBRMaterial.PBRMATERIAL_ALPHATEST }, { label: "Alpha blend", value: PBRMaterial.PBRMATERIAL_ALPHABLEND }, { label: "Alpha blend and test", value: PBRMaterial.PBRMATERIAL_ALPHATESTANDBLEND }, ]; var alphaModeOptions = [ { label: "Combine", value: Constants.ALPHA_COMBINE }, { label: "One one", value: Constants.ALPHA_ONEONE }, { label: "Add", value: Constants.ALPHA_ADD }, { label: "Subtract", value: Constants.ALPHA_SUBTRACT }, { label: "Multiply", value: Constants.ALPHA_MULTIPLY }, { label: "Maximized", value: Constants.ALPHA_MAXIMIZED }, { label: "Pre-multiplied", value: Constants.ALPHA_PREMULTIPLIED }, ]; var depthfunctionOptions = [ { label: "Never", value: Engine.NEVER }, { label: "Always", value: Engine.ALWAYS }, { label: "Equal", value: Engine.EQUAL }, { label: "Less", value: Engine.LESS }, { label: "Less or equal", value: Engine.LEQUAL }, { label: "Greater", value: Engine.GREATER }, { label: "Greater or equal", value: Engine.GEQUAL }, { label: "Not equal", value: Engine.NOTEQUAL }, ]; return (
this.setState({ mode: value })} /> this.setState({ depthFunction: value })} /> { material.dispose(); this.props.globalState.onSelectionChangedObservable.notifyObservers(null); }} /> { (material as any).transparencyMode !== undefined && this.setState({ transparencyMode: value })} /> } this.setState({ alphaMode: value })} />
); } }