UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

195 lines (179 loc) 4.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SampledTexture = exports.SampledCubeTexture = exports.SampledArrayTexture = exports.Sampled3DTexture = void 0; var _Binding = _interopRequireDefault(require("./Binding.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let _id = 0; /** * Represents a sampled texture binding type. * * @private * @augments Binding */ class SampledTexture extends _Binding.default { /** * Constructs a new sampled texture. * * @param {string} name - The sampled texture's name. * @param {?Texture} texture - The texture this binding is referring to. */ constructor(name, texture) { super(name); /** * This identifier. * * @type {number} */ this.id = _id++; /** * The texture this binding is referring to. * * @type {?Texture} */ this.texture = texture; /** * The binding's version. * * @type {number} */ this.version = texture ? texture.version : 0; /** * Whether the texture is a storage texture or not. * * @type {boolean} * @default false */ this.store = false; /** * The binding's generation which is an additional version * qualifier. * * @type {?number} * @default null */ this.generation = null; /** * This flag can be used for type testing. * * @type {boolean} * @readonly * @default true */ this.isSampledTexture = true; } /** * Returns `true` whether this binding requires an update for the * given generation. * * @param {number} generation - The generation. * @return {boolean} Whether an update is required or not. */ needsBindingsUpdate(generation) { const { texture } = this; if (generation !== this.generation) { this.generation = generation; return true; } return texture.isVideoTexture; } /** * Updates the binding. * * @return {boolean} Whether the texture has been updated and must be * uploaded to the GPU. */ update() { const { texture, version } = this; if (version !== texture.version) { this.version = texture.version; return true; } return false; } } /** * Represents a sampled array texture binding type. * * @private * @augments SampledTexture */ exports.SampledTexture = SampledTexture; class SampledArrayTexture extends SampledTexture { /** * Constructs a new sampled array texture. * * @param {string} name - The sampled array texture's name. * @param {?(DataArrayTexture|CompressedArrayTexture)} texture - The texture this binding is referring to. */ constructor(name, texture) { super(name, texture); /** * This flag can be used for type testing. * * @type {boolean} * @readonly * @default true */ this.isSampledArrayTexture = true; } } /** * Represents a sampled 3D texture binding type. * * @private * @augments SampledTexture */ exports.SampledArrayTexture = SampledArrayTexture; class Sampled3DTexture extends SampledTexture { /** * Constructs a new sampled 3D texture. * * @param {string} name - The sampled 3D texture's name. * @param {?Data3DTexture} texture - The texture this binding is referring to. */ constructor(name, texture) { super(name, texture); /** * This flag can be used for type testing. * * @type {boolean} * @readonly * @default true */ this.isSampled3DTexture = true; } } /** * Represents a sampled cube texture binding type. * * @private * @augments SampledTexture */ exports.Sampled3DTexture = Sampled3DTexture; class SampledCubeTexture extends SampledTexture { /** * Constructs a new sampled cube texture. * * @param {string} name - The sampled cube texture's name. * @param {?(CubeTexture|CompressedCubeTexture)} texture - The texture this binding is referring to. */ constructor(name, texture) { super(name, texture); /** * This flag can be used for type testing. * * @type {boolean} * @readonly * @default true */ this.isSampledCubeTexture = true; } } exports.SampledCubeTexture = SampledCubeTexture;