@xviewer.js/core 1.0.0-alpha.34 → 1.0.0-alpha.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.js CHANGED
@@ -3,7 +3,7 @@ import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
3
3
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
4
4
  import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
5
5
  import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
6
- import { EquirectangularReflectionMapping, FileLoader, TextureLoader, SRGBColorSpace, MathUtils, Vector3, Quaternion, Raycaster, Vector2, LinearInterpolant, Spherical, Object3D, Mesh, BoxGeometry, SphereGeometry, PlaneGeometry, Plane as Plane$1, Matrix4, Vector4, PerspectiveCamera, WebGLRenderTarget, HalfFloatType, LinearMipMapLinearFilter, LinearFilter, ShaderMaterial, UniformsUtils, Color, Scene, OrthographicCamera, NoBlending, AdditiveBlending, FloatType, UnsignedByteType, BufferGeometry, Float32BufferAttribute, ClampToEdgeWrapping, NearestFilter, LinearSRGBColorSpace, WebGLCubeRenderTarget, DataTexture, RGBAFormat, UVMapping, WebGLRenderer, PCFSoftShadowMap, LoadingManager, LinearToneMapping, PMREMGenerator, MeshBasicMaterial, CubeCamera, Box3Helper, Box3, ShaderLib, ShaderChunk } from 'three';
6
+ import { EquirectangularReflectionMapping, FileLoader, TextureLoader, SRGBColorSpace, MathUtils, Vector3, Quaternion, Raycaster, Vector2, LinearInterpolant, Spherical, Mesh, BoxGeometry, SphereGeometry, PlaneGeometry, Plane as Plane$1, Matrix4, Vector4, PerspectiveCamera, WebGLRenderTarget, HalfFloatType, LinearMipMapLinearFilter, LinearFilter, ShaderMaterial, UniformsUtils, Color, Scene, OrthographicCamera, NoBlending, AdditiveBlending, FloatType, UnsignedByteType, BufferGeometry, Float32BufferAttribute, Object3D, ClampToEdgeWrapping, NearestFilter, LinearSRGBColorSpace, WebGLCubeRenderTarget, DataTexture, RGBAFormat, UVMapping, WebGLRenderer, PCFSoftShadowMap, LoadingManager, LinearToneMapping, PMREMGenerator, MeshBasicMaterial, CubeCamera, Box3Helper, Box3, ShaderLib, ShaderChunk } from 'three';
7
7
  import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
8
8
 
9
9
  class EventEmitter {
@@ -704,7 +704,6 @@ class Tween {
704
704
  union(headTween, tailTween) {
705
705
  this._headTween = headTween;
706
706
  this._tailTween = tailTween.chain(this);
707
- this._headStart = true;
708
707
  return this;
709
708
  }
710
709
  repeat(times = 0) {
@@ -801,11 +800,13 @@ class Tween {
801
800
  if (this._onFinishCallback) {
802
801
  this._onFinishCallback(this._object);
803
802
  }
804
- if (this._headTween && this._headStart) {
805
- this._headTween.start(this._startTime + this._duration);
806
- this._headStart = false;
807
- this._isPlaying = false;
808
- return false;
803
+ if (this._headTween) {
804
+ if (this._headTweenStartFired === false) {
805
+ this._headTweenStartFired = true;
806
+ this._headTween.start(this._startTime + this._duration);
807
+ this._isPlaying = false;
808
+ return false;
809
+ }
809
810
  }
810
811
  }
811
812
  const status = this._calculateCompletionStatus(elapsedTime, durationAndDelay);
@@ -828,7 +829,7 @@ class Tween {
828
829
  this._onRepeatCallback(this._object);
829
830
  }
830
831
  if (this._headTween) {
831
- this._headStart = true;
832
+ this._headTweenStartFired = false;
832
833
  this._initialRepeat = this._repeat;
833
834
  }
834
835
  this._onEveryStartCallbackFired = false;
@@ -971,7 +972,7 @@ class Tween {
971
972
  this._propertiesAreSetUp = false;
972
973
  this._headTween = null;
973
974
  this._tailTween = null;
974
- this._headStart = false;
975
+ this._headTweenStartFired = false;
975
976
  this._goToEnd = false;
976
977
  }
977
978
  }
@@ -1440,13 +1441,13 @@ class CinestationBrain extends Component {
1440
1441
  }
1441
1442
  _lerpToMainCamera(vcam, t) {
1442
1443
  const from = this.node, to = vcam;
1443
- const { fov, near, far, finalPosition, finalRotation } = to;
1444
- const isLensChanged = from.fov != fov || from.near != near || from.far != far;
1444
+ const { lens, finalPosition, finalRotation } = to;
1445
+ const isLensChanged = from.fov != lens.fov || from.near != lens.near || from.far != lens.far;
1445
1446
  from.position.lerp(finalPosition, t);
1446
1447
  from.quaternion.slerp(finalRotation, t);
1447
- from.fov = lerp$1(from.fov, fov, t);
1448
- from.near = near;
1449
- from.far = far;
1448
+ from.fov = lerp$1(from.fov, lens.fov, t);
1449
+ from.near = lens.near;
1450
+ from.far = lens.far;
1450
1451
  if (isLensChanged) {
1451
1452
  from.updateProjectionMatrix();
1452
1453
  }
@@ -1464,6 +1465,28 @@ __decorate([
1464
1465
  property
1465
1466
  ], CinestationBrain.prototype, "brainBlend", void 0);
1466
1467
 
1468
+ class Lens {
1469
+ constructor(){
1470
+ this.fov = 45;
1471
+ this.near = 0.1;
1472
+ this.far = 1000;
1473
+ }
1474
+ }
1475
+ __decorate([
1476
+ property({
1477
+ dir: "lens"
1478
+ })
1479
+ ], Lens.prototype, "fov", void 0);
1480
+ __decorate([
1481
+ property({
1482
+ dir: "lens"
1483
+ })
1484
+ ], Lens.prototype, "near", void 0);
1485
+ __decorate([
1486
+ property({
1487
+ dir: "lens"
1488
+ })
1489
+ ], Lens.prototype, "far", void 0);
1467
1490
  class VirtualCamera extends Component {
1468
1491
  get finalPosition() {
1469
1492
  return this._finalPosition.copy(this.node.position).add(this.correctPosition);
@@ -1474,9 +1497,9 @@ class VirtualCamera extends Component {
1474
1497
  onLoad() {
1475
1498
  this.node.isCamera = true;
1476
1499
  const camera = this.viewer.camera;
1477
- this.fov = camera.fov;
1478
- this.near = camera.near;
1479
- this.far = camera.far;
1500
+ this.lens.fov = camera.fov;
1501
+ this.lens.near = camera.near;
1502
+ this.lens.far = camera.far;
1480
1503
  this.node.position.set(0, 0, 4);
1481
1504
  this.brain = this.viewer.getComponent(camera, CinestationBrain, true);
1482
1505
  this.brain.addCamera(this);
@@ -1489,30 +1512,14 @@ class VirtualCamera extends Component {
1489
1512
  this._finalPosition = new Vector3();
1490
1513
  this._finalRotation = new Quaternion();
1491
1514
  this.priority = 10;
1492
- this.lookAt = null;
1493
- this.follow = null;
1494
- this.fov = 45;
1495
- this.near = 0.1;
1496
- this.far = 1000;
1515
+ this.lens = new Lens();
1497
1516
  this.correctPosition = new Vector3();
1498
1517
  this.correctRotation = new Quaternion();
1499
1518
  }
1500
1519
  }
1501
1520
  __decorate([
1502
- property({
1503
- dir: "lens"
1504
- })
1505
- ], VirtualCamera.prototype, "fov", void 0);
1506
- __decorate([
1507
- property({
1508
- dir: "lens"
1509
- })
1510
- ], VirtualCamera.prototype, "near", void 0);
1511
- __decorate([
1512
- property({
1513
- dir: "lens"
1514
- })
1515
- ], VirtualCamera.prototype, "far", void 0);
1521
+ property
1522
+ ], VirtualCamera.prototype, "lens", void 0);
1516
1523
 
1517
1524
  const PressState = {
1518
1525
  NONE: 1 << 0,
@@ -2609,16 +2616,39 @@ Perlin._Permutation = [
2609
2616
  ];
2610
2617
 
2611
2618
  const { clamp, degToRad } = MathUtils;
2612
- const { abs, tan } = Math;
2619
+ const { abs, tan, PI } = Math;
2620
+ const PI2 = PI * 2;
2621
+ const ESP = 0.001;
2613
2622
  class FreelookVirtualCamera extends VirtualCamera {
2614
- printInfo() {
2615
- const spherical = this._spherical;
2616
- const lookAt = new Vector3().copy(this.lookAt.position).add(this._lookAtOffset);
2617
- console.log([
2618
- `springLength: ${spherical.radius.toFixed(2)}`,
2619
- `rotation: ${spherical.theta.toFixed(2)}, ${spherical.phi.toFixed(2)}`,
2620
- `lookAt: ${lookAt.x.toFixed(2)},${lookAt.y.toFixed(2)},${lookAt.z.toFixed(2)}`
2621
- ].join("\n"));
2623
+ get lookAt() {
2624
+ return this._lookAt;
2625
+ }
2626
+ set lookAt(v) {
2627
+ this._lookAt = this._targetLookAt = v;
2628
+ }
2629
+ get springLength() {
2630
+ return this._spherical.radius;
2631
+ }
2632
+ set springLength(v) {
2633
+ this._spherical.radius = this._targetSpringLength = v;
2634
+ }
2635
+ get theta() {
2636
+ return this._spherical.theta;
2637
+ }
2638
+ set theta(v) {
2639
+ this._spherical.theta = this._targetTheta = v;
2640
+ }
2641
+ get phi() {
2642
+ return this._spherical.phi;
2643
+ }
2644
+ set phi(v) {
2645
+ this._spherical.phi = this._targetPhi = v;
2646
+ }
2647
+ get fov() {
2648
+ return this.lens.fov;
2649
+ }
2650
+ set fov(v) {
2651
+ this.lens.fov = this._targetFov = v;
2622
2652
  }
2623
2653
  onEnable() {
2624
2654
  this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);
@@ -2640,10 +2670,7 @@ class FreelookVirtualCamera extends VirtualCamera {
2640
2670
  reset() {
2641
2671
  this._button = -1;
2642
2672
  this._touchID = -1;
2643
- this._setSpherical(this.node.position, this.lookAtPosition);
2644
- }
2645
- get lookAtPosition() {
2646
- return this._lookAtPosition.copy(this.lookAt.position).add(this._lookAtOffset);
2673
+ this._setSpherical(this.node.position, this.lookAt);
2647
2674
  }
2648
2675
  _setSpherical(position, lookAt) {
2649
2676
  const { __posDelta } = FreelookVirtualCamera;
@@ -2667,12 +2694,12 @@ class FreelookVirtualCamera extends VirtualCamera {
2667
2694
  switch(this._button){
2668
2695
  case 0:
2669
2696
  this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0);
2670
- this._calculateSpherical(__rotateDelta);
2697
+ this._calculateTargetSpringArm(__rotateDelta);
2671
2698
  break;
2672
2699
  case 1:
2673
2700
  case 2:
2674
2701
  this._calculatePanDelta(__panDelta, this._preLoc0, __loc0);
2675
- this._calculateLookAtOffset(__panDelta);
2702
+ this._calculateTargetLookAt(__panDelta);
2676
2703
  break;
2677
2704
  }
2678
2705
  this._preLoc0.copy(__loc0);
@@ -2680,46 +2707,44 @@ class FreelookVirtualCamera extends VirtualCamera {
2680
2707
  _onMouseWheel(e) {
2681
2708
  if (this.lookAt) {
2682
2709
  if (e.deltaY > 0) {
2683
- this._targetSpherical.radius *= this._calculateDistanceScale(1 / 0.85);
2710
+ this._targetSpringLength *= this._calculateDistanceScale(1 / 0.85);
2684
2711
  } else if (e.deltaY < 0) {
2685
- this._targetSpherical.radius *= this._calculateDistanceScale(0.85);
2712
+ this._targetSpringLength *= this._calculateDistanceScale(0.85);
2686
2713
  }
2687
2714
  }
2688
2715
  }
2689
2716
  _onTouchStart(e) {
2690
2717
  if (!SystemInfo.isMobile) return;
2691
2718
  let touches = e.touches;
2692
- let rotateTouchID = this.rotateTouchID;
2693
- if (touches.length > rotateTouchID + 1) {
2694
- this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);
2695
- this._preLoc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);
2696
- } else if (touches.length > rotateTouchID) {
2697
- this._touchID = touches[rotateTouchID].identifier;
2698
- this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);
2719
+ if (touches.length > 1) {
2720
+ this._preLoc0.set(touches[0].pageX, touches[0].pageY);
2721
+ this._preLoc1.set(touches[1].pageX, touches[1].pageY);
2722
+ } else if (touches.length > 0) {
2723
+ this._touchID = touches[0].identifier;
2724
+ this._preLoc0.set(touches[0].pageX, touches[0].pageY);
2699
2725
  }
2700
2726
  }
2701
2727
  _onTouchMove(e) {
2702
2728
  if (!SystemInfo.isMobile) return;
2703
2729
  const { __loc0, __loc1, __panDelta, __rotateDelta, __preCenter, __center } = FreelookVirtualCamera;
2704
2730
  let touches = e.touches;
2705
- let rotateTouchID = this.rotateTouchID;
2706
- if (touches.length > rotateTouchID + 1) {
2707
- __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);
2708
- __loc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);
2731
+ if (touches.length > 1) {
2732
+ __loc0.set(touches[0].pageX, touches[0].pageY);
2733
+ __loc1.set(touches[1].pageX, touches[1].pageY);
2709
2734
  if (this.lookAt) {
2710
- this._targetSpherical.radius *= this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1));
2735
+ this._targetSpringLength *= this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1));
2711
2736
  }
2712
2737
  __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5);
2713
2738
  __center.copy(__loc0).add(__loc1).multiplyScalar(0.5);
2714
2739
  this._calculatePanDelta(__panDelta, __preCenter, __center);
2715
- this._calculateLookAtOffset(__panDelta);
2740
+ this._calculateTargetLookAt(__panDelta);
2716
2741
  this._preLoc0.copy(__loc0);
2717
2742
  this._preLoc1.copy(__loc1);
2718
- } else if (touches.length > rotateTouchID) {
2719
- if (this._touchID === touches[rotateTouchID].identifier) {
2720
- __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);
2743
+ } else if (touches.length > 0) {
2744
+ if (this._touchID === touches[0].identifier) {
2745
+ __loc0.set(touches[0].pageX, touches[0].pageY);
2721
2746
  this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0);
2722
- this._calculateSpherical(__rotateDelta);
2747
+ this._calculateTargetSpringArm(__rotateDelta);
2723
2748
  this._preLoc0.copy(__loc0);
2724
2749
  }
2725
2750
  }
@@ -2756,7 +2781,7 @@ class FreelookVirtualCamera extends VirtualCamera {
2756
2781
  }
2757
2782
  return out;
2758
2783
  }
2759
- _calculateLookAtOffset(panDelta) {
2784
+ _calculateTargetLookAt(panDelta) {
2760
2785
  const { __xAxis, __yAxis, __posDelta } = FreelookVirtualCamera;
2761
2786
  __xAxis.setFromMatrixColumn(this.node.matrix, 0);
2762
2787
  __yAxis.setFromMatrixColumn(this.node.matrix, 1);
@@ -2764,46 +2789,43 @@ class FreelookVirtualCamera extends VirtualCamera {
2764
2789
  __yAxis.y = 0;
2765
2790
  __yAxis.normalize();
2766
2791
  }
2767
- __posDelta.copy(this.node.position).sub(this.lookAtPosition);
2792
+ __posDelta.copy(this.node.position).sub(this.lookAt);
2768
2793
  const length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));
2769
- return this._targetLookAtOffset.sub(__xAxis.multiplyScalar(panDelta.x * length)).add(__yAxis.multiplyScalar(panDelta.y * length));
2794
+ this._targetLookAt.sub(__xAxis.multiplyScalar(panDelta.x * length)).add(__yAxis.multiplyScalar(panDelta.y * length));
2770
2795
  }
2771
- _calculateSpherical(rotateDelta, radius) {
2772
- const spherical = this._targetSpherical;
2796
+ _calculateTargetSpringArm(rotateDelta, radius) {
2773
2797
  if (rotateDelta) {
2774
- spherical.theta -= rotateDelta.x;
2775
- spherical.phi += rotateDelta.y;
2798
+ this._targetTheta -= rotateDelta.x;
2799
+ this._targetPhi += rotateDelta.y;
2776
2800
  }
2777
2801
  if (radius) {
2778
- spherical.radius = radius;
2802
+ this._targetSpringLength = radius;
2779
2803
  }
2780
- spherical.theta = clamp(spherical.theta, this.thetaMin, this.thetaMax);
2781
- spherical.phi = clamp(spherical.phi, this.phiMin, this.phiMax);
2782
- spherical.radius = clamp(spherical.radius, this.distanceMin, this.distanceMax);
2783
- return spherical;
2804
+ this._targetTheta = clamp(this._targetTheta, this.thetaMin, this.thetaMax);
2805
+ this._targetPhi = clamp(this._targetPhi, this.phiMin, this.phiMax);
2806
+ this._targetSpringLength = clamp(this._targetSpringLength, this.distanceMin, this.distanceMax);
2784
2807
  }
2785
- gotoPOI(springLength, rotation, lookAt, fov = this.fov, smoothing = this.smoothing) {
2808
+ gotoPOI({ springLength = this._targetSpringLength, theta = this._targetTheta, phi = this._targetPhi, lookAt = this.lookAt, fov = this.lens.fov, smoothing = this.smoothing }) {
2786
2809
  this._targetFov = fov;
2787
2810
  this._tempSmoothing = smoothing;
2788
- this._targetSpherical.radius = springLength;
2789
- if (rotation) {
2790
- this._targetSpherical.theta = rotation.x;
2791
- this._targetSpherical.phi = rotation.y;
2792
- }
2793
- this._calculateSpherical();
2794
- if (lookAt) {
2795
- this._targetLookAtOffset.copy(lookAt).sub(this.lookAt.position);
2796
- }
2811
+ this._targetSpringLength = springLength;
2812
+ this._targetPhi = phi;
2813
+ this._targetTheta = theta;
2814
+ this._calculateTargetSpringArm();
2815
+ const theta0 = MathUtils.euclideanModulo(this._spherical.theta, PI2);
2816
+ const theta1 = theta0 - PI2;
2817
+ this._spherical.theta = abs(theta0 - this._targetTheta) < abs(theta1 - this._targetTheta) ? theta0 : theta1;
2818
+ this._targetLookAt.copy(lookAt);
2797
2819
  }
2798
2820
  update(dt) {
2799
2821
  const smoothing = this._tempSmoothing;
2800
- this._spherical.theta = FInterpTo(this._spherical.theta, this._targetSpherical.theta, dt, smoothing);
2801
- this._spherical.phi = FInterpTo(this._spherical.phi, this._targetSpherical.phi, dt, smoothing);
2802
- this._spherical.radius = FInterpTo(this._spherical.radius, this._targetSpherical.radius, dt, smoothing);
2803
- this.node.position.setFromSpherical(this._spherical).add(this.lookAtPosition);
2804
- this.fov = FInterpTo(this.fov, this._targetFov, dt, smoothing);
2805
- VInterpTo(this._lookAtOffset, this._targetLookAtOffset, dt, smoothing);
2806
- this.node.lookAt(this.lookAtPosition);
2822
+ this._spherical.theta = FInterpTo(this._spherical.theta, this._targetTheta, dt, smoothing);
2823
+ this._spherical.phi = FInterpTo(this._spherical.phi, this._targetPhi, dt, smoothing);
2824
+ this._spherical.radius = FInterpTo(this._spherical.radius, this._targetSpringLength, dt, smoothing);
2825
+ this.lens.fov = FInterpTo(this.lens.fov, this._targetFov, dt, smoothing);
2826
+ VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);
2827
+ this.node.position.setFromSpherical(this._spherical).add(this.lookAt);
2828
+ this.node.lookAt(this._lookAt);
2807
2829
  }
2808
2830
  constructor(...args){
2809
2831
  super(...args);
@@ -2812,11 +2834,13 @@ class FreelookVirtualCamera extends VirtualCamera {
2812
2834
  this._preLoc0 = new Vector2();
2813
2835
  this._preLoc1 = new Vector2();
2814
2836
  this._spherical = new Spherical();
2815
- this._lookAtPosition = new Vector3();
2816
- this._lookAtOffset = new Vector3();
2837
+ this._lookAt = new Vector3();
2817
2838
  this._tempSmoothing = 0;
2839
+ this._targetTheta = 0;
2840
+ this._targetPhi = 0;
2841
+ this._targetSpringLength = 1;
2818
2842
  this._targetFov = this.fov;
2819
- this._targetLookAtOffset = new Vector3();
2843
+ this._targetLookAt = new Vector3();
2820
2844
  this._targetSpherical = new Spherical();
2821
2845
  this.forbidX = false;
2822
2846
  this.forbidY = false;
@@ -2824,18 +2848,15 @@ class FreelookVirtualCamera extends VirtualCamera {
2824
2848
  this.forbidPanX = false;
2825
2849
  this.forbidPanY = false;
2826
2850
  this.forbitPanOffsetY = false;
2851
+ this.panSpeed = 1;
2852
+ this.rotateSpeed = 1;
2827
2853
  this.smoothing = 5;
2828
- this.rotateSpeed = 2;
2829
- this.panSpeed = 2;
2830
- this.panScale = new Vector3(1, 1, 1);
2831
- this.phiMin = 0.001;
2832
- this.phiMax = Math.PI - 0.001;
2854
+ this.phiMin = ESP;
2855
+ this.phiMax = Math.PI - ESP;
2833
2856
  this.thetaMin = -Infinity;
2834
2857
  this.thetaMax = Infinity;
2835
- this.distanceMin = 0.001;
2858
+ this.distanceMin = ESP;
2836
2859
  this.distanceMax = Infinity;
2837
- this.rotateTouchID = 0;
2838
- this.lookAt = new Object3D();
2839
2860
  }
2840
2861
  }
2841
2862
  FreelookVirtualCamera.__loc0 = new Vector2();
@@ -2879,9 +2900,83 @@ __decorate([
2879
2900
  dir: "set"
2880
2901
  })
2881
2902
  ], FreelookVirtualCamera.prototype, "forbitPanOffsetY", void 0);
2903
+ __decorate([
2904
+ property({
2905
+ dir: "set",
2906
+ step: 0.01
2907
+ })
2908
+ ], FreelookVirtualCamera.prototype, "panSpeed", void 0);
2909
+ __decorate([
2910
+ property({
2911
+ dir: "set",
2912
+ step: 0.01
2913
+ })
2914
+ ], FreelookVirtualCamera.prototype, "rotateSpeed", void 0);
2915
+ __decorate([
2916
+ property({
2917
+ dir: "set",
2918
+ step: 0.01
2919
+ })
2920
+ ], FreelookVirtualCamera.prototype, "smoothing", void 0);
2921
+ __decorate([
2922
+ property({
2923
+ dir: "set",
2924
+ step: 0.01
2925
+ })
2926
+ ], FreelookVirtualCamera.prototype, "phiMin", void 0);
2927
+ __decorate([
2928
+ property({
2929
+ dir: "set",
2930
+ step: 0.01
2931
+ })
2932
+ ], FreelookVirtualCamera.prototype, "phiMax", void 0);
2933
+ __decorate([
2934
+ property({
2935
+ dir: "set",
2936
+ step: 0.01
2937
+ })
2938
+ ], FreelookVirtualCamera.prototype, "thetaMin", void 0);
2939
+ __decorate([
2940
+ property({
2941
+ dir: "set",
2942
+ step: 0.01
2943
+ })
2944
+ ], FreelookVirtualCamera.prototype, "thetaMax", void 0);
2945
+ __decorate([
2946
+ property({
2947
+ dir: "set",
2948
+ step: 0.01
2949
+ })
2950
+ ], FreelookVirtualCamera.prototype, "distanceMin", void 0);
2951
+ __decorate([
2952
+ property({
2953
+ dir: "set",
2954
+ step: 0.01
2955
+ })
2956
+ ], FreelookVirtualCamera.prototype, "distanceMax", void 0);
2957
+ __decorate([
2958
+ property({
2959
+ step: 0.01
2960
+ })
2961
+ ], FreelookVirtualCamera.prototype, "lookAt", null);
2962
+ __decorate([
2963
+ property({
2964
+ step: 0.01
2965
+ })
2966
+ ], FreelookVirtualCamera.prototype, "springLength", null);
2967
+ __decorate([
2968
+ property({
2969
+ step: 0.01
2970
+ })
2971
+ ], FreelookVirtualCamera.prototype, "theta", null);
2972
+ __decorate([
2973
+ property({
2974
+ step: 0.01
2975
+ })
2976
+ ], FreelookVirtualCamera.prototype, "phi", null);
2882
2977
  __decorate([
2883
2978
  property
2884
- ], FreelookVirtualCamera.prototype, "printInfo", null);
2979
+ ], FreelookVirtualCamera.prototype, "fov", null);
2885
2980
 
2886
2981
  class Box extends Mesh {
2887
2982
  constructor(...args){