transformNodePropertyGridComponent.tsx 3.2 KB

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