Add existing to tracked
This commit is contained in:
+86
@@ -0,0 +1,86 @@
|
||||
import { defined, DeveloperError } from "@cesium/engine";
|
||||
import knockout from "../ThirdParty/knockout.js";
|
||||
import createCommand from "../createCommand.js";
|
||||
|
||||
/**
|
||||
* The view model for {@link HomeButton}.
|
||||
* @alias HomeButtonViewModel
|
||||
* @constructor
|
||||
*
|
||||
* @param {Scene} scene The scene instance to use.
|
||||
* @param {number} [duration] The duration of the camera flight in seconds.
|
||||
*/
|
||||
function HomeButtonViewModel(scene, duration) {
|
||||
//>>includeStart('debug', pragmas.debug);
|
||||
if (!defined(scene)) {
|
||||
throw new DeveloperError("scene is required.");
|
||||
}
|
||||
//>>includeEnd('debug');
|
||||
|
||||
this._scene = scene;
|
||||
this._duration = duration;
|
||||
|
||||
const that = this;
|
||||
this._command = createCommand(function () {
|
||||
that._scene.camera.flyHome(that._duration);
|
||||
});
|
||||
|
||||
/**
|
||||
* Gets or sets the tooltip. This property is observable.
|
||||
*
|
||||
* @type {string}
|
||||
*/
|
||||
this.tooltip = "View Home";
|
||||
|
||||
knockout.track(this, ["tooltip"]);
|
||||
}
|
||||
|
||||
Object.defineProperties(HomeButtonViewModel.prototype, {
|
||||
/**
|
||||
* Gets the scene to control.
|
||||
* @memberof HomeButtonViewModel.prototype
|
||||
*
|
||||
* @type {Scene}
|
||||
*/
|
||||
scene: {
|
||||
get: function () {
|
||||
return this._scene;
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the Command that is executed when the button is clicked.
|
||||
* @memberof HomeButtonViewModel.prototype
|
||||
*
|
||||
* @type {Command}
|
||||
*/
|
||||
command: {
|
||||
get: function () {
|
||||
return this._command;
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets or sets the the duration of the camera flight in seconds.
|
||||
* A value of zero causes the camera to instantly switch to home view.
|
||||
* The duration will be computed based on the distance when undefined.
|
||||
* @memberof HomeButtonViewModel.prototype
|
||||
*
|
||||
* @type {number|undefined}
|
||||
*/
|
||||
duration: {
|
||||
get: function () {
|
||||
return this._duration;
|
||||
},
|
||||
set: function (value) {
|
||||
//>>includeStart('debug', pragmas.debug);
|
||||
if (defined(value) && value < 0) {
|
||||
throw new DeveloperError("value must be positive.");
|
||||
}
|
||||
//>>includeEnd('debug');
|
||||
|
||||
this._duration = value;
|
||||
},
|
||||
},
|
||||
});
|
||||
export default HomeButtonViewModel;
|
||||
Reference in New Issue
Block a user