Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 750x 750x 750x 1x 5x 1x 2x 2x 2x 2x 2x 1x 4x 4x 4x 4x 5x 4x 4x 4x 1x 71x 71x 3x 3x 3x 3x 3x 71x 1x 1x 1x 734x 734x 1x 1x 734x | import defined from "../Core/defined.js";
import destroyObject from "../Core/destroyObject.js";
/**
* @private
*/
function TextureCache() {
this._textures = {};
this._numberOfTextures = 0;
this._texturesToRelease = {};
}
Object.defineProperties(TextureCache.prototype, {
numberOfTextures: {
get: function () {
return this._numberOfTextures;
},
},
});
TextureCache.prototype.getTexture = function (keyword) {
const cachedTexture = this._textures[keyword];
Iif (!defined(cachedTexture)) {
return undefined;
}
// No longer want to release this if it was previously released.
delete this._texturesToRelease[keyword];
++cachedTexture.count;
return cachedTexture.texture;
};
TextureCache.prototype.addTexture = function (keyword, texture) {
const cachedTexture = {
texture: texture,
count: 1,
};
texture.finalDestroy = texture.destroy;
const that = this;
texture.destroy = function () {
if (--cachedTexture.count === 0) {
that._texturesToRelease[keyword] = cachedTexture;
}
};
this._textures[keyword] = cachedTexture;
++this._numberOfTextures;
};
TextureCache.prototype.destroyReleasedTextures = function () {
const texturesToRelease = this._texturesToRelease;
for (const keyword in texturesToRelease) {
Eif (texturesToRelease.hasOwnProperty(keyword)) {
const cachedTexture = texturesToRelease[keyword];
delete this._textures[keyword];
cachedTexture.texture.finalDestroy();
--this._numberOfTextures;
}
}
this._texturesToRelease = {};
};
TextureCache.prototype.isDestroyed = function () {
return false;
};
TextureCache.prototype.destroy = function () {
const textures = this._textures;
for (const keyword in textures) {
Eif (textures.hasOwnProperty(keyword)) {
textures[keyword].texture.finalDestroy();
}
}
return destroyObject(this);
};
export default TextureCache;
|