52 lines
2.6 KiB
JavaScript
52 lines
2.6 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$CubeTexture = function(global, require, module, exports) {
|
|
function getCubeCacheKey(faceIds, options) {
|
|
const opts = options ? {...options} : {};
|
|
delete opts.label;
|
|
options = Object.keys(opts).sort();
|
|
options = options.length ? `|${options.map(k => `${k}=${String(opts[k])}`).join("\x26")}` : "";
|
|
return `cube:${faceKeys.map(k => faceIds[k]).join(",")}${options}`;
|
|
}
|
|
global = require("module$node_modules$eventemitter3$index");
|
|
var Cache = require("module$node_modules$pixi_DOT_js$lib$assets$cache$Cache"), uid = require("module$node_modules$pixi_DOT_js$lib$utils$data$uid"), CubeTextureSource = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$CubeTextureSource"), Texture = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$Texture");
|
|
"use strict";
|
|
const faceKeys = "left right top bottom front back".split(" ");
|
|
class CubeTexture extends global {
|
|
constructor(options) {
|
|
super();
|
|
this.uid = uid.uid("cubeTexture");
|
|
this.destroyed = !1;
|
|
const {label, source} = options;
|
|
this.label = label;
|
|
this.source = source;
|
|
this.source.label = this.label ?? this.source.label;
|
|
}
|
|
static from(options, skipCache = !1) {
|
|
if (options instanceof CubeTextureSource.CubeTextureSource) {
|
|
return new CubeTexture({source:options});
|
|
}
|
|
const {faces, ...sourceOptions} = options;
|
|
let cacheKey = null;
|
|
options = faceKeys.every(key => "string" === typeof faces[key]);
|
|
if (!skipCache && options && (cacheKey = getCubeCacheKey(faces, sourceOptions), Cache.Cache.has(cacheKey))) {
|
|
return Cache.Cache.get(cacheKey);
|
|
}
|
|
skipCache = input => input.isTexture ? input : Texture.Texture.from(input);
|
|
options = {};
|
|
for (var key of faceKeys) {
|
|
options[key] = skipCache(faces[key]).source;
|
|
}
|
|
key = new CubeTexture({source:new CubeTextureSource.CubeTextureSource({...sourceOptions, faces:options}), label:sourceOptions.label});
|
|
cacheKey && (Cache.Cache.set(cacheKey, key), key.once("destroy", () => {
|
|
Cache.Cache.has(cacheKey) && Cache.Cache.remove(cacheKey);
|
|
}));
|
|
return key;
|
|
}
|
|
destroy(destroySource = !1) {
|
|
this.destroyed || (this.destroyed = !0, destroySource && this.source.destroy(), this.emit("destroy", this), this.removeAllListeners());
|
|
}
|
|
}
|
|
exports.CubeTexture = CubeTexture;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$CubeTexture.js.map
|