transformNodePropertyGridComponent.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import * as React from "react";
  2. import { TransformNode } from "babylonjs/Meshes/transformNode";
  3. import { Observable } from "babylonjs/Misc/observable";
  4. import { PropertyChangedEvent } from "../../../../propertyChangedEvent";
  5. import { LineContainerComponent } from "../../../lineContainerComponent";
  6. import { CheckBoxLineComponent } from "../../../lines/checkBoxLineComponent";
  7. import { Vector3LineComponent } from "../../../lines/vector3LineComponent";
  8. import { TextLineComponent } from "../../../lines/textLineComponent";
  9. import { QuaternionLineComponent } from "../../../lines/quaternionLineComponent";
  10. import { AxesViewerComponent } from "./axesViewerComponent";
  11. import { LockObject } from "../lockObject";
  12. import { GlobalState } from '../../../../globalState';
  13. import { CustomPropertyGridComponent } from '../customPropertyGridComponent';
  14. interface ITransformNodePropertyGridComponentProps {
  15. globalState: GlobalState;
  16. transformNode: TransformNode,
  17. lockObject: LockObject,
  18. onPropertyChangedObservable?: Observable<PropertyChangedEvent>
  19. }
  20. export class TransformNodePropertyGridComponent extends React.Component<ITransformNodePropertyGridComponentProps> {
  21. constructor(props: ITransformNodePropertyGridComponentProps) {
  22. super(props);
  23. }
  24. render() {
  25. const transformNode = this.props.transformNode;
  26. return (
  27. <div className="pane">
  28. <CustomPropertyGridComponent globalState={this.props.globalState} target={transformNode}
  29. onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  30. <LineContainerComponent globalState={this.props.globalState} title="GENERAL">
  31. <TextLineComponent label="ID" value={transformNode.id} />
  32. <TextLineComponent label="Unique ID" value={transformNode.uniqueId.toString()} />
  33. <TextLineComponent label="Class" value={transformNode.getClassName()} />
  34. <CheckBoxLineComponent label="IsEnabled" isSelected={() => transformNode.isEnabled()} onSelect={(value) => transformNode.setEnabled(value)} />
  35. </LineContainerComponent>
  36. <LineContainerComponent globalState={this.props.globalState} title="TRANSFORMATIONS">
  37. <Vector3LineComponent label="Position" target={transformNode} propertyName="position" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  38. {
  39. !transformNode.rotationQuaternion &&
  40. <Vector3LineComponent label="Rotation" target={transformNode} propertyName="rotation" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  41. }
  42. {
  43. transformNode.rotationQuaternion &&
  44. <QuaternionLineComponent label="Rotation" target={transformNode} propertyName="rotationQuaternion" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  45. }
  46. <Vector3LineComponent label="Scaling" target={transformNode} propertyName="scaling" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  47. </LineContainerComponent>
  48. <LineContainerComponent globalState={this.props.globalState} title="DEBUG" closed={true}>
  49. <AxesViewerComponent globalState={this.props.globalState} node={transformNode} />
  50. </LineContainerComponent>
  51. </div>
  52. );
  53. }
  54. }