123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- import defined from "../Core/defined.js";
- import ImageryState from "./ImageryState.js";
- function TileImagery(imagery, textureCoordinateRectangle, useWebMercatorT) {
- this.readyImagery = undefined;
- this.loadingImagery = imagery;
- this.textureCoordinateRectangle = textureCoordinateRectangle;
- this.textureTranslationAndScale = undefined;
- this.useWebMercatorT = useWebMercatorT;
- }
- TileImagery.prototype.freeResources = function () {
- if (defined(this.readyImagery)) {
- this.readyImagery.releaseReference();
- }
- if (defined(this.loadingImagery)) {
- this.loadingImagery.releaseReference();
- }
- };
- TileImagery.prototype.processStateMachine = function (
- tile,
- frameState,
- skipLoading
- ) {
- var loadingImagery = this.loadingImagery;
- var imageryLayer = loadingImagery.imageryLayer;
- loadingImagery.processStateMachine(
- frameState,
- !this.useWebMercatorT,
- skipLoading
- );
- if (loadingImagery.state === ImageryState.READY) {
- if (defined(this.readyImagery)) {
- this.readyImagery.releaseReference();
- }
- this.readyImagery = this.loadingImagery;
- this.loadingImagery = undefined;
- this.textureTranslationAndScale = imageryLayer._calculateTextureTranslationAndScale(
- tile,
- this
- );
- return true;
- }
-
- var ancestor = loadingImagery.parent;
- var closestAncestorThatNeedsLoading;
- while (
- defined(ancestor) &&
- (ancestor.state !== ImageryState.READY ||
- (!this.useWebMercatorT && !defined(ancestor.texture)))
- ) {
- if (
- ancestor.state !== ImageryState.FAILED &&
- ancestor.state !== ImageryState.INVALID
- ) {
-
- closestAncestorThatNeedsLoading =
- closestAncestorThatNeedsLoading || ancestor;
- }
- ancestor = ancestor.parent;
- }
- if (this.readyImagery !== ancestor) {
- if (defined(this.readyImagery)) {
- this.readyImagery.releaseReference();
- }
- this.readyImagery = ancestor;
- if (defined(ancestor)) {
- ancestor.addReference();
- this.textureTranslationAndScale = imageryLayer._calculateTextureTranslationAndScale(
- tile,
- this
- );
- }
- }
- if (
- loadingImagery.state === ImageryState.FAILED ||
- loadingImagery.state === ImageryState.INVALID
- ) {
-
- if (defined(closestAncestorThatNeedsLoading)) {
-
-
-
- closestAncestorThatNeedsLoading.processStateMachine(
- frameState,
- !this.useWebMercatorT,
- skipLoading
- );
- return false;
- }
-
- return true;
- }
- return false;
- };
- export default TileImagery;
|