variantsPropertyGridComponent.tsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import * as React from "react";
  2. import { Observable } from "babylonjs/Misc/observable";
  3. import { PropertyChangedEvent } from "../../../propertyChangedEvent";
  4. import { LineContainerComponent } from "../../lineContainerComponent";
  5. import { LockObject } from "./lockObject";
  6. import { GlobalState } from "../../../globalState";
  7. import { OptionsLineComponent } from '../../lines/optionsLineComponent';
  8. import { ButtonLineComponent } from '../../lines/buttonLineComponent';
  9. interface IVariantsPropertyGridComponentProps {
  10. globalState: GlobalState;
  11. host: any;
  12. lockObject: LockObject;
  13. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  14. }
  15. export class VariantsPropertyGridComponent extends React.Component<IVariantsPropertyGridComponentProps> {
  16. <<<<<<< HEAD
  17. =======
  18. private _lastOne = 0;
  19. >>>>>>> eed1cab37fd382f46ffdd6ed91c732acd8c85b76
  20. constructor(props: IVariantsPropertyGridComponentProps) {
  21. super(props);
  22. }
  23. render() {
  24. <<<<<<< HEAD
  25. let variants = BABYLON.GLTF2.Loader.Extensions.KHR_materials_variants.GetAvailableVariants(this.props.host);
  26. =======
  27. let root = (BABYLON as any).GLTF2.Loader.Extensions;
  28. let variants = root.KHR_materials_variants.GetAvailableVariants(this.props.host);
  29. >>>>>>> eed1cab37fd382f46ffdd6ed91c732acd8c85b76
  30. if (!variants || variants.length === 0) {
  31. return null;
  32. }
  33. <<<<<<< HEAD
  34. let options = variants.map((v, i) => {
  35. var displayName = v;
  36. if (displayName === BABYLON.GLTF2.Loader.Extensions.KHR_materials_variants.DEFAULT) {
  37. displayName = "Default";
  38. }
  39. return {label: displayName, value: i}
  40. });
  41. =======
  42. let options = variants.map((v: string, i: number) => {
  43. return {label: v, value: i + 1}
  44. });
  45. options.splice(0, 0, {label: "Original", value: 0})
  46. >>>>>>> eed1cab37fd382f46ffdd6ed91c732acd8c85b76
  47. return (
  48. <div>
  49. <LineContainerComponent globalState={this.props.globalState} title="VARIANTS">
  50. <OptionsLineComponent
  51. label="Active variant" options={options} noDirectUpdate={true}
  52. target={this.props.host}
  53. propertyName=""
  54. onSelect={(value: number) => {
  55. <<<<<<< HEAD
  56. BABYLON.GLTF2.Loader.Extensions.KHR_materials_variants.SelectVariant(this.props.host, variants[value]);
  57. =======
  58. if (value === 0) {
  59. root.KHR_materials_variants.Reset(this.props.host);
  60. } else {
  61. root.KHR_materials_variants.SelectVariant(this.props.host, variants[value - 1]);
  62. }
  63. this._lastOne = value;
  64. >>>>>>> eed1cab37fd382f46ffdd6ed91c732acd8c85b76
  65. this.forceUpdate();
  66. }}
  67. extractValue={() => {
  68. <<<<<<< HEAD
  69. let lastOne = BABYLON.GLTF2.Loader.Extensions.KHR_materials_variants.GetLastSelectedVariant(this.props.host) || 0;
  70. let index = variants.indexOf(lastOne) ;
  71. return index < -1 ? 0 : index;
  72. }}
  73. />
  74. =======
  75. let lastPickedVariant = root.KHR_materials_variants.GetLastSelectedVariant(this.props.host) || 0;
  76. if (lastPickedVariant && Object.prototype.toString.call(lastPickedVariant) === '[object String]') {
  77. let index = variants.indexOf(lastPickedVariant as string);
  78. if (index > -1) {
  79. this._lastOne = index + 1;
  80. }
  81. }
  82. return this._lastOne;
  83. }}
  84. />
  85. <ButtonLineComponent label="Reset" onClick={() => {
  86. root.KHR_materials_variants.Reset(this.props.host);
  87. this._lastOne = 0;
  88. this.forceUpdate();
  89. }} />
  90. >>>>>>> eed1cab37fd382f46ffdd6ed91c732acd8c85b76
  91. </LineContainerComponent>
  92. </div>
  93. );
  94. }
  95. }