Skip to content

Commit

Permalink
cleanup toJSON and fromJSON
Browse files Browse the repository at this point in the history
  • Loading branch information
yomotsu committed Apr 5, 2020
1 parent b5aa677 commit a805b41
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 37 deletions.
13 changes: 7 additions & 6 deletions dist/CameraControls.d.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as _THREE from 'three';
import type * as _THREE from 'three';
import { ACTION, MouseButtons, Touches, FitToOptions } from './types';
import { EventDispatcher } from './EventDispatcher';
export declare class CameraControls extends EventDispatcher {
static install(libs: any): void;
static readonly ACTION: Readonly<typeof ACTION>;
static get ACTION(): Readonly<typeof ACTION>;
enabled: boolean;
minPolarAngle: number;
maxPolarAngle: number;
Expand Down Expand Up @@ -48,9 +48,10 @@ export declare class CameraControls extends EventDispatcher {
protected _needsUpdate: boolean;
protected _updatedLastTime: boolean;
constructor(camera: _THREE.PerspectiveCamera | _THREE.OrthographicCamera, domElement: HTMLElement);
phiSpeed: number;
thetaSpeed: number;
boundaryEnclosesCamera: boolean;
set phiSpeed(speed: number);
set thetaSpeed(speed: number);
get boundaryEnclosesCamera(): boolean;
set boundaryEnclosesCamera(boundaryEnclosesCamera: boolean);
rotate(azimuthAngle: number, polarAngle: number, enableTransition?: boolean): void;
rotateTo(azimuthAngle: number, polarAngle: number, enableTransition?: boolean): void;
dolly(distance: number, enableTransition?: boolean): void;
Expand All @@ -77,7 +78,7 @@ export declare class CameraControls extends EventDispatcher {
updateCameraUp(): void;
update(delta: number): boolean;
toJSON(): string;
fromJSON(json: any, enableTransition?: boolean): void;
fromJSON(json: string, enableTransition?: boolean): void;
dispose(): void;
protected _encloseToBoundary(position: _THREE.Vector3, offset: _THREE.Vector3, friction: number): _THREE.Vector3;
protected _updateNearPlaneCorners(): void;
Expand Down
21 changes: 13 additions & 8 deletions dist/camera-controls.js
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@
_this._domElement = domElement;
_this._target = new THREE.Vector3();
_this._targetEnd = _this._target.clone();
_this._spherical = new THREE.Spherical().setFromVector3(_this._camera.position.clone().applyQuaternion(_this._yAxisUpSpace));
_this._spherical = new THREE.Spherical().setFromVector3(_v3A.copy(_this._camera.position).applyQuaternion(_this._yAxisUpSpace));
_this._sphericalEnd = _this._spherical.clone();
_this._zoom = _this._camera.zoom;
_this._zoomEnd = _this._zoom;
Expand Down Expand Up @@ -842,6 +842,8 @@
enabled: this.enabled,
minDistance: this.minDistance,
maxDistance: infinityToMaxNumber(this.maxDistance),
minZoom: this.minZoom,
maxZoom: infinityToMaxNumber(this.maxZoom),
minPolarAngle: this.minPolarAngle,
maxPolarAngle: infinityToMaxNumber(this.maxPolarAngle),
minAzimuthAngle: infinityToMaxNumber(this.minAzimuthAngle),
Expand All @@ -854,17 +856,21 @@
verticalDragToForward: this.verticalDragToForward,
target: this._targetEnd.toArray(),
position: this._camera.position.toArray(),
zoom: this._camera.zoom,
target0: this._target0.toArray(),
position0: this._position0.toArray(),
_zoom0: this._zoom0,
});
};
CameraControls.prototype.fromJSON = function (json, enableTransition) {
if (enableTransition === void 0) { enableTransition = false; }
var obj = JSON.parse(json);
var position = new THREE.Vector3().fromArray(obj.position);
var position = _v3A.fromArray(obj.position);
this.enabled = obj.enabled;
this.minDistance = obj.minDistance;
this.maxDistance = maxNumberToInfinity(obj.maxDistance);
this.minZoom = obj.minZoom;
this.maxZoom = maxNumberToInfinity(obj.maxZoom);
this.minPolarAngle = obj.minPolarAngle;
this.maxPolarAngle = maxNumberToInfinity(obj.maxPolarAngle);
this.minAzimuthAngle = maxNumberToInfinity(obj.minAzimuthAngle);
Expand All @@ -877,12 +883,11 @@
this.verticalDragToForward = obj.verticalDragToForward;
this._target0.fromArray(obj.target0);
this._position0.fromArray(obj.position0);
this._targetEnd.fromArray(obj.target);
this._sphericalEnd.setFromVector3(position.sub(this._target0).applyQuaternion(this._yAxisUpSpace));
if (!enableTransition) {
this._target.copy(this._targetEnd);
this._spherical.copy(this._sphericalEnd);
}
this._zoom0 = obj.zoom0;
this.moveTo(obj.target[0], obj.target[1], obj.target[2], enableTransition);
_sphericalA.setFromVector3(position.sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace));
this.rotateTo(_sphericalA.theta, _sphericalA.phi, enableTransition);
this.zoomTo(obj.zoom, enableTransition);
this._needsUpdate = true;
};
CameraControls.prototype.dispose = function () {
Expand Down
21 changes: 13 additions & 8 deletions dist/camera-controls.module.js
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ var CameraControls = (function (_super) {
_this._domElement = domElement;
_this._target = new THREE.Vector3();
_this._targetEnd = _this._target.clone();
_this._spherical = new THREE.Spherical().setFromVector3(_this._camera.position.clone().applyQuaternion(_this._yAxisUpSpace));
_this._spherical = new THREE.Spherical().setFromVector3(_v3A.copy(_this._camera.position).applyQuaternion(_this._yAxisUpSpace));
_this._sphericalEnd = _this._spherical.clone();
_this._zoom = _this._camera.zoom;
_this._zoomEnd = _this._zoom;
Expand Down Expand Up @@ -836,6 +836,8 @@ var CameraControls = (function (_super) {
enabled: this.enabled,
minDistance: this.minDistance,
maxDistance: infinityToMaxNumber(this.maxDistance),
minZoom: this.minZoom,
maxZoom: infinityToMaxNumber(this.maxZoom),
minPolarAngle: this.minPolarAngle,
maxPolarAngle: infinityToMaxNumber(this.maxPolarAngle),
minAzimuthAngle: infinityToMaxNumber(this.minAzimuthAngle),
Expand All @@ -848,17 +850,21 @@ var CameraControls = (function (_super) {
verticalDragToForward: this.verticalDragToForward,
target: this._targetEnd.toArray(),
position: this._camera.position.toArray(),
zoom: this._camera.zoom,
target0: this._target0.toArray(),
position0: this._position0.toArray(),
_zoom0: this._zoom0,
});
};
CameraControls.prototype.fromJSON = function (json, enableTransition) {
if (enableTransition === void 0) { enableTransition = false; }
var obj = JSON.parse(json);
var position = new THREE.Vector3().fromArray(obj.position);
var position = _v3A.fromArray(obj.position);
this.enabled = obj.enabled;
this.minDistance = obj.minDistance;
this.maxDistance = maxNumberToInfinity(obj.maxDistance);
this.minZoom = obj.minZoom;
this.maxZoom = maxNumberToInfinity(obj.maxZoom);
this.minPolarAngle = obj.minPolarAngle;
this.maxPolarAngle = maxNumberToInfinity(obj.maxPolarAngle);
this.minAzimuthAngle = maxNumberToInfinity(obj.minAzimuthAngle);
Expand All @@ -871,12 +877,11 @@ var CameraControls = (function (_super) {
this.verticalDragToForward = obj.verticalDragToForward;
this._target0.fromArray(obj.target0);
this._position0.fromArray(obj.position0);
this._targetEnd.fromArray(obj.target);
this._sphericalEnd.setFromVector3(position.sub(this._target0).applyQuaternion(this._yAxisUpSpace));
if (!enableTransition) {
this._target.copy(this._targetEnd);
this._spherical.copy(this._sphericalEnd);
}
this._zoom0 = obj.zoom0;
this.moveTo(obj.target[0], obj.target[1], obj.target[2], enableTransition);
_sphericalA.setFromVector3(position.sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace));
this.rotateTo(_sphericalA.theta, _sphericalA.phi, enableTransition);
this.zoomTo(obj.zoom, enableTransition);
this._needsUpdate = true;
};
CameraControls.prototype.dispose = function () {
Expand Down
29 changes: 14 additions & 15 deletions src/CameraControls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1152,13 +1152,15 @@ export class CameraControls extends EventDispatcher {

}

toJSON() {
toJSON(): string {

return JSON.stringify( {
enabled : this.enabled,

minDistance : this.minDistance,
maxDistance : infinityToMaxNumber( this.maxDistance ),
minZoom : this.minZoom,
maxZoom : infinityToMaxNumber( this.maxZoom ),
minPolarAngle : this.minPolarAngle,
maxPolarAngle : infinityToMaxNumber( this.maxPolarAngle ),
minAzimuthAngle : infinityToMaxNumber( this.minAzimuthAngle ),
Expand All @@ -1172,24 +1174,27 @@ export class CameraControls extends EventDispatcher {

target : this._targetEnd.toArray(),
position : this._camera.position.toArray(),
zoom : this._camera.zoom,

target0 : this._target0.toArray(),
position0 : this._position0.toArray(),
_zoom0 : this._zoom0,

zoom : this._camera.zoom,
} );

}

fromJSON( json: any, enableTransition: boolean = false ): void {
fromJSON( json: string, enableTransition: boolean = false ): void {

const obj = JSON.parse( json );
const position = ( new THREE.Vector3() as _THREE.Vector3 ).fromArray( obj.position );
const position = _v3A.fromArray( obj.position );

this.enabled = obj.enabled;

this.minDistance = obj.minDistance;
this.maxDistance = maxNumberToInfinity( obj.maxDistance );
this.minZoom = obj.minZoom;
this.maxZoom = maxNumberToInfinity( obj.maxZoom );
this.minPolarAngle = obj.minPolarAngle;
this.maxPolarAngle = maxNumberToInfinity( obj.maxPolarAngle );
this.minAzimuthAngle = maxNumberToInfinity( obj.minAzimuthAngle );
Expand All @@ -1203,18 +1208,12 @@ export class CameraControls extends EventDispatcher {

this._target0.fromArray( obj.target0 );
this._position0.fromArray( obj.position0 );
this._zoom0 = obj.zoom0;

this._targetEnd.fromArray( obj.target );
this._sphericalEnd.setFromVector3( position.sub( this._target0 ).applyQuaternion( this._yAxisUpSpace ) );

if ( ! enableTransition ) {

this._target.copy( this._targetEnd );
this._spherical.copy( this._sphericalEnd );

}

this._camera.zoom = obj.zoom;
this.moveTo( obj.target[ 0 ], obj.target[ 1 ], obj.target[ 2 ], enableTransition );
_sphericalA.setFromVector3( position.sub( this._targetEnd ).applyQuaternion( this._yAxisUpSpace ) );
this.rotateTo( _sphericalA.theta, _sphericalA.phi, enableTransition );
this.zoomTo( obj.zoom, enableTransition );

this._needsUpdate = true;

Expand Down

0 comments on commit a805b41

Please sign in to comment.