treeItemSpecializedComponent.tsx 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { AbstractMesh, Camera, Light, Material, Texture, TransformNode, IExplorerExtensibilityGroup } from "babylonjs";
  2. import { MeshTreeItemComponent } from "./entities/meshTreeItemComponent";
  3. import { CameraTreeItemComponent } from "./entities/cameraTreeItemComponent";
  4. import { LightTreeItemComponent } from "./entities/lightTreeItemComponent";
  5. import { TreeItemLabelComponent } from "./treeItemLabelComponent";
  6. import { faProjectDiagram } from '@fortawesome/free-solid-svg-icons';
  7. import { MaterialTreeItemComponent } from "./entities/materialTreeItemComponent";
  8. import { TextureTreeItemComponent } from "./entities/textureTreeItemComponent";
  9. import { TransformNodeItemComponent } from "./entities/transformNodeTreeItemComponent";
  10. import * as React from "react";
  11. interface ITreeItemSpecializedComponentProps {
  12. label: string,
  13. entity?: any,
  14. extensibilityGroups?: IExplorerExtensibilityGroup[],
  15. onClick?: () => void
  16. }
  17. export class TreeItemSpecializedComponent extends React.Component<ITreeItemSpecializedComponentProps> {
  18. constructor(props: ITreeItemSpecializedComponentProps) {
  19. super(props);
  20. }
  21. onClick() {
  22. if (!this.props.onClick) {
  23. return;
  24. }
  25. this.props.onClick();
  26. }
  27. render() {
  28. const entity = this.props.entity;
  29. if (entity && entity.getClassName) {
  30. const className = entity.getClassName();
  31. if (className.indexOf("Mesh") !== -1) {
  32. const mesh = entity as AbstractMesh;
  33. if (mesh.getTotalVertices() > 0) {
  34. return (<MeshTreeItemComponent extensibilityGroups={this.props.extensibilityGroups} mesh={mesh} onClick={() => this.onClick()} />);
  35. } else {
  36. return (<TransformNodeItemComponent extensibilityGroups={this.props.extensibilityGroups} transformNode={entity as TransformNode} onClick={() => this.onClick()} />);
  37. }
  38. }
  39. if (className.indexOf("TransformNode") !== -1) {
  40. return (<TransformNodeItemComponent extensibilityGroups={this.props.extensibilityGroups} transformNode={entity as TransformNode} onClick={() => this.onClick()} />);
  41. }
  42. if (className.indexOf("Camera") !== -1) {
  43. return (<CameraTreeItemComponent extensibilityGroups={this.props.extensibilityGroups} camera={entity as Camera} onClick={() => this.onClick()} />);
  44. }
  45. if (className.indexOf("Light") !== -1) {
  46. return (<LightTreeItemComponent extensibilityGroups={this.props.extensibilityGroups} light={entity as Light} onClick={() => this.onClick()} />);
  47. }
  48. if (className.indexOf("Material") !== -1) {
  49. return (<MaterialTreeItemComponent extensibilityGroups={this.props.extensibilityGroups} material={entity as Material} onClick={() => this.onClick()} />);
  50. }
  51. if (className.indexOf("Texture") !== -1) {
  52. return (<TextureTreeItemComponent extensibilityGroups={this.props.extensibilityGroups} texture={entity as Texture} onClick={() => this.onClick()} />);
  53. }
  54. }
  55. return (
  56. <div className="meshTools">
  57. <TreeItemLabelComponent label={entity.name} onClick={() => this.onClick()} icon={faProjectDiagram} color="cornflowerblue" />
  58. </div>
  59. )
  60. }
  61. }