66 lines
3.4 KiB
JavaScript
66 lines
3.4 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$CubeTextureSource = function(global, require, module, exports) {
|
|
var warn = require("module$node_modules$pixi_DOT_js$lib$utils$logging$warn");
|
|
global = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$TextureSource");
|
|
"use strict";
|
|
class CubeTextureSource extends global.TextureSource {
|
|
constructor(options) {
|
|
const {faces, ...rest} = options;
|
|
CubeTextureSource._validateFaces(faces);
|
|
options = faces.right;
|
|
const derivedResolution = options.resolution, derivedFormat = options.format, derivedAlphaMode = options.alphaMode, ignoredKeys = ["resolution", "format", "alphaMode", "dimensions", "viewDimension"].filter(key => void 0 !== rest[key]);
|
|
ignoredKeys.length && warn.warn(`[CubeTextureSource] Ignoring option(s) [${ignoredKeys.join(", ")}]; these are derived from face sources.`);
|
|
super({...rest, resource:faces, width:options.width, height:options.height, dimensions:"2d", viewDimension:"cube", arrayLayerCount:6, resolution:derivedResolution, format:derivedFormat, alphaMode:derivedAlphaMode});
|
|
this.uploadMethodId = "cube";
|
|
this.faces = faces;
|
|
for (const key of Object.keys(faces)) {
|
|
options = faces[key], options.on("update", this._onFaceUpdate, this), options.on("resize", this._onFaceResize, this), options.on("unload", this._onFaceUpdate, this);
|
|
}
|
|
}
|
|
destroy() {
|
|
const faces = this.faces;
|
|
if (faces) {
|
|
for (const key of Object.keys(faces)) {
|
|
const face = faces[key];
|
|
face.off("update", this._onFaceUpdate, this);
|
|
face.off("resize", this._onFaceResize, this);
|
|
face.off("unload", this._onFaceUpdate, this);
|
|
}
|
|
}
|
|
super.destroy();
|
|
}
|
|
_onFaceUpdate() {
|
|
this.emit("update", this);
|
|
}
|
|
_onFaceResize(face) {
|
|
CubeTextureSource._validateFaces(this.faces);
|
|
this.resize(face.width, face.height, face.resolution);
|
|
}
|
|
static _validateFaces(faces) {
|
|
if (!(faces.right && faces.left && faces.top && faces.bottom && faces.front && faces.back)) {
|
|
throw Error("[CubeTextureSource] Requires { left, right, top, bottom, front, back } faces.");
|
|
}
|
|
var first = faces.right;
|
|
const expectedPixelWidth = first.pixelWidth, expectedPixelHeight = first.pixelHeight, expectedFormat = first.format, expectedAlphaMode = first.alphaMode;
|
|
first = first.resolution;
|
|
for (const key of Object.keys(faces)) {
|
|
const face = faces[key];
|
|
if (face.pixelWidth !== expectedPixelWidth || face.pixelHeight !== expectedPixelHeight) {
|
|
throw Error(`[CubeTextureSource] Face '${String(key)}' has a different size. All faces must match.`);
|
|
}
|
|
if (face.format !== expectedFormat) {
|
|
throw Error(`[CubeTextureSource] Face '${String(key)}' has a different format. All faces must match.`);
|
|
}
|
|
if (face.alphaMode !== expectedAlphaMode) {
|
|
throw Error(`[CubeTextureSource] Face '${String(key)}' has a different alphaMode. All faces must match.`);
|
|
}
|
|
if (face.resolution !== first) {
|
|
throw Error(`[CubeTextureSource] Face '${String(key)}' has a different resolution. All faces must match.`);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
exports.CubeTextureSource = CubeTextureSource;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$CubeTextureSource.js.map
|