transformNodePropertyGridComponent.tsx 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. interface ITransformNodePropertyGridComponentProps {
  13. transformNode: TransformNode,
  14. lockObject: LockObject,
  15. onPropertyChangedObservable?: Observable<PropertyChangedEvent>
  16. }
  17. export class TransformNodePropertyGridComponent extends React.Component<ITransformNodePropertyGridComponentProps> {
  18. constructor(props: ITransformNodePropertyGridComponentProps) {
  19. super(props);
  20. }
  21. render() {
  22. const transformNode = this.props.transformNode;
  23. return (
  24. <div className="pane">
  25. <LineContainerComponent title="GENERAL">
  26. <TextLineComponent label="ID" value={transformNode.id} />
  27. <TextLineComponent label="Unique ID" value={transformNode.uniqueId.toString()} />
  28. <TextLineComponent label="Class" value={transformNode.getClassName()} />
  29. <CheckBoxLineComponent label="IsEnabled" isSelected={() => transformNode.isEnabled()} onSelect={(value) => transformNode.setEnabled(value)} />
  30. </LineContainerComponent>
  31. <LineContainerComponent title="TRANSFORMATIONS">
  32. <Vector3LineComponent label="Position" target={transformNode} propertyName="position" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  33. {
  34. !transformNode.rotationQuaternion &&
  35. <Vector3LineComponent label="Rotation" target={transformNode} propertyName="rotation" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  36. }
  37. {
  38. transformNode.rotationQuaternion &&
  39. <QuaternionLineComponent label="Rotation" target={transformNode} propertyName="rotationQuaternion" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  40. }
  41. <Vector3LineComponent label="Scaling" target={transformNode} propertyName="scaling" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  42. </LineContainerComponent>
  43. <LineContainerComponent title="DEBUG" closed={true}>
  44. <AxesViewerComponent node={transformNode} />
  45. </LineContainerComponent>
  46. </div>
  47. );
  48. }
  49. }