code: function Scene(viewer, view) {
    this._viewer = viewer;
    this._view = view;
    this._layers = [];
  
    // Hotspot container. Assume it occupies a full rect.
    this._hotspotContainer = new HotspotContainer(
      viewer._controlContainer,
      viewer.stage(),
      this._view,
      viewer.renderLoop());
  
    // The current movement.
    this._movement = null;
    this._movementStartTime = null;
    this._movementStep = null;
    this._movementParams = null;
    this._movementCallback = null;
  
    // Event listener for updating the view according to the current movement.
    // The listener is set/unset on the render loop when a movement starts/stops.
    this._updateMovementHandler = this._updateMovement.bind(this);
  
    // Show or hide hotspots when scene changes.
    this._updateHotspotContainerHandler = this._updateHotspotContainer.bind(this);
    this._viewer.addEventListener('sceneChange', this._updateHotspotContainerHandler);
  
    // Emit event when view changes.
    this._viewChangeHandler = this.emit.bind(this, 'viewChange');
    this._view.addEventListener('change', this._viewChangeHandler);
  
    // Update the hotspot container.
    this._updateHotspotContainer();
  }
docs: Signals that the scene's layers have changed.
  @event Scene#layerChange
   
  @class Scene
  @classdesc
  
  A Scene is a stack of {@link Layer layers} sharing the same {@link View view}
  and {@link HotspotContainer hotspot container}. It belongs to the
  {@link Viewer viewer} inside which it is displayed.
  
  Clients should call {@link Viewer#createScene} instead of invoking the
  constructor directly.
  
  @param {Viewer} viewer The viewer this scene belongs to.
  @param {View} view The scene's underlying view.