transformNodePropertyGridComponent.tsx 2.9 KB

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