diff --git a/Source/Scene/Scene.js b/Source/Scene/Scene.js index 436293542ab2..f5d3a07dde79 100644 --- a/Source/Scene/Scene.js +++ b/Source/Scene/Scene.js @@ -3249,6 +3249,10 @@ define([ var us = context.uniformState; var frameState = this._frameState; + // Update with previous frame's time, assuming that render is called before picking. + this._preUpdate.raiseEvent(this, frameState.time); + this._postUpdate.raiseEvent(this, frameState.time); + var view = this._defaultView; this._view = view; diff --git a/Source/Widgets/Viewer/Viewer.js b/Source/Widgets/Viewer/Viewer.js index 528fddd8f1ad..1df07a286ce9 100644 --- a/Source/Widgets/Viewer/Viewer.js +++ b/Source/Widgets/Viewer/Viewer.js @@ -457,7 +457,7 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to var eventHelper = new EventHelper(); - eventHelper.add(clock.onTick, Viewer.prototype._onTick, this); + eventHelper.add(scene.preUpdate, Viewer.prototype._onPreUpdate, this); eventHelper.add(scene.morphStart, Viewer.prototype._clearTrackedObject, this); // Selection Indicator @@ -1586,9 +1586,7 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to /** * @private */ - Viewer.prototype._onTick = function(clock) { - var time = clock.currentTime; - + Viewer.prototype._onPreUpdate = function(scene, time) { var isUpdated = this._dataSourceDisplay.update(time); if (this._allowDataSourcesToSuspendAnimation) { this._clockViewModel.canAnimate = isUpdated; diff --git a/Specs/Widgets/Viewer/ViewerSpec.js b/Specs/Widgets/Viewer/ViewerSpec.js index 6de5697812e3..4b6d3271f2e0 100644 --- a/Specs/Widgets/Viewer/ViewerSpec.js +++ b/Specs/Widgets/Viewer/ViewerSpec.js @@ -973,7 +973,7 @@ defineSuite([ viewer.selectedEntity = entity; - viewer.clock.tick(); + viewer.render(); expect(viewModel.showInfo).toBe(true); expect(viewModel.titleText).toEqual(entity.id); expect(viewModel.description).toEqual(''); @@ -981,14 +981,14 @@ defineSuite([ entity.name = 'Yes, this is name.'; entity.description = 'tubelcane'; - viewer.clock.tick(); + viewer.render(); expect(viewModel.showInfo).toBe(true); expect(viewModel.titleText).toEqual(entity.name); expect(viewModel.description).toEqual(entity.description.getValue()); viewer.selectedEntity = undefined; - viewer.clock.tick(); + viewer.render(); expect(viewModel.showInfo).toBe(false); expect(viewModel.titleText).toEqual(''); expect(viewModel.description).toEqual('');