arcRotateCameraPropertyGridComponent.tsx 6.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import * as React from "react";
  2. import { ArcRotateCamera } from "babylonjs/Cameras/arcRotateCamera";
  3. import { Observable } from "babylonjs/Misc/observable";
  4. import { PropertyChangedEvent } from "../../../../propertyChangedEvent";
  5. import { CommonCameraPropertyGridComponent } from "./commonCameraPropertyGridComponent";
  6. import { LineContainerComponent } from "../../../lineContainerComponent";
  7. import { CheckBoxLineComponent } from "../../../lines/checkBoxLineComponent";
  8. import { FloatLineComponent } from "../../../lines/floatLineComponent";
  9. import { SliderLineComponent } from "../../../lines/sliderLineComponent";
  10. import { Vector3LineComponent } from "../../../lines/vector3LineComponent";
  11. import { LockObject } from "../lockObject";
  12. import { GlobalState } from '../../../../globalState';
  13. interface IArcRotateCameraPropertyGridComponentProps {
  14. globalState: GlobalState;
  15. camera: ArcRotateCamera;
  16. lockObject: LockObject;
  17. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  18. }
  19. export class ArcRotateCameraPropertyGridComponent extends React.Component<IArcRotateCameraPropertyGridComponentProps> {
  20. constructor(props: IArcRotateCameraPropertyGridComponentProps) {
  21. super(props);
  22. }
  23. render() {
  24. const camera = this.props.camera;
  25. return (
  26. <div className="pane">
  27. <CommonCameraPropertyGridComponent globalState={this.props.globalState} lockObject={this.props.lockObject} camera={camera} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  28. <LineContainerComponent globalState={this.props.globalState} title="TRANSFORMS">
  29. <Vector3LineComponent label="Target" target={camera} propertyName="target" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  30. <SliderLineComponent label="Alpha" target={camera} propertyName="alpha" minimum={camera.lowerAlphaLimit || 0} maximum={camera.upperAlphaLimit || 2 * Math.PI} step={0.01} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  31. <SliderLineComponent label="Beta" target={camera} propertyName="beta" minimum={camera.lowerAlphaLimit || 0} maximum={camera.upperBetaLimit || 2 * Math.PI} step={0.01} onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  32. <FloatLineComponent lockObject={this.props.lockObject} label="Radius" target={camera} propertyName="radius" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  33. </LineContainerComponent>
  34. <LineContainerComponent globalState={this.props.globalState} title="CONTROLS" closed={true}>
  35. <FloatLineComponent lockObject={this.props.lockObject} label="Angular sensitivity X" target={camera} propertyName="angularSensibilityX" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  36. <FloatLineComponent lockObject={this.props.lockObject} label="Angular sensitivity Y" target={camera} propertyName="angularSensibilityY" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  37. <FloatLineComponent lockObject={this.props.lockObject} label="Panning sensitivity" target={camera} propertyName="panningSensibility" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  38. <FloatLineComponent lockObject={this.props.lockObject} label="Pinch delta percentage" target={camera} propertyName="pinchDeltaPercentage" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  39. <FloatLineComponent lockObject={this.props.lockObject} label="Wheel delta percentage" target={camera} propertyName="wheelDeltaPercentage" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  40. <FloatLineComponent lockObject={this.props.lockObject} label="Speed" target={camera} propertyName="speed" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  41. </LineContainerComponent>
  42. <LineContainerComponent globalState={this.props.globalState} title="COLLISIONS" closed={true}>
  43. <CheckBoxLineComponent label="Check collisions" target={camera} propertyName="checkCollisions" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  44. <Vector3LineComponent label="Collision radius" target={camera} propertyName="collisionRadius" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  45. </LineContainerComponent>
  46. <LineContainerComponent globalState={this.props.globalState} title="LIMITS" closed={true}>
  47. <FloatLineComponent lockObject={this.props.lockObject} label="Lower alpha limit" target={camera} propertyName="lowerAlphaLimit" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  48. <FloatLineComponent lockObject={this.props.lockObject} label="Upper alpha limit" target={camera} propertyName="upperAlphaLimit" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  49. <FloatLineComponent lockObject={this.props.lockObject} label="Lower beta limit" target={camera} propertyName="lowerBetaLimit" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  50. <FloatLineComponent lockObject={this.props.lockObject} label="Upper beta limit" target={camera} propertyName="upperBetaLimit" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  51. <FloatLineComponent lockObject={this.props.lockObject} label="Lower radius limit" target={camera} propertyName="lowerRadiusLimit" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  52. <FloatLineComponent lockObject={this.props.lockObject} label="Upper radius limit" target={camera} propertyName="upperRadiusLimit" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  53. </LineContainerComponent>
  54. <LineContainerComponent globalState={this.props.globalState} title="BEHAVIORS" closed={true}>
  55. <CheckBoxLineComponent label="Auto rotation" target={camera} propertyName="useAutoRotationBehavior" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  56. <CheckBoxLineComponent label="Bouncing" target={camera} propertyName="useBouncingBehavior" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  57. <CheckBoxLineComponent label="Framing" target={camera} propertyName="useFramingBehavior" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
  58. </LineContainerComponent>
  59. </div>
  60. );
  61. }
  62. }