shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$geometry$Geometry = function(global, require, module, exports) { global = require("module$node_modules$eventemitter3$index"); var Bounds = require("module$node_modules$pixi_DOT_js$lib$scene$container$bounds$Bounds"), uid = require("module$node_modules$pixi_DOT_js$lib$utils$data$uid"), Buffer = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$buffer$Buffer"), ensureIsBuffer = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$geometry$utils$ensureIsBuffer"), getGeometryBounds = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$geometry$utils$getGeometryBounds"); "use strict"; class Geometry extends global { constructor(options = {}) { super(); this._gpuData = Object.create(null); this.autoGarbageCollect = !0; this._gcLastUsed = -1; this.uid = uid.uid("geometry"); this._layoutKey = 0; this.instanceCount = 1; this._bounds = new Bounds.Bounds(); this._boundsDirty = !0; const {attributes, indexBuffer, topology} = options; this.buffers = []; this.attributes = {}; if (attributes) { for (const i in attributes) { this.addAttribute(i, attributes[i]); } } this.instanceCount = options.instanceCount ?? 1; indexBuffer && this.addIndex(indexBuffer); this.topology = topology || "triangle-list"; } onBufferUpdate() { this._boundsDirty = !0; this.emit("update", this); } getAttribute(id) { return this.attributes[id]; } getIndex() { return this.indexBuffer; } getBuffer(id) { return this.getAttribute(id).buffer; } getSize() { for (var i in this.attributes) { return i = this.attributes[i], i.buffer.data.length / (i.stride / 4 || i.size); } return 0; } addAttribute(name, attributeOption) { if (attributeOption instanceof Buffer.Buffer || Array.isArray(attributeOption) || attributeOption.BYTES_PER_ELEMENT) { attributeOption = {buffer:attributeOption}; } attributeOption.buffer = ensureIsBuffer.ensureIsBuffer(attributeOption.buffer, !1); -1 === this.buffers.indexOf(attributeOption.buffer) && (this.buffers.push(attributeOption.buffer), attributeOption.buffer.on("update", this.onBufferUpdate, this), attributeOption.buffer.on("change", this.onBufferUpdate, this)); this.attributes[name] = attributeOption; } addIndex(indexBuffer) { this.indexBuffer = ensureIsBuffer.ensureIsBuffer(indexBuffer, !0); this.buffers.push(this.indexBuffer); } get bounds() { if (!this._boundsDirty) { return this._bounds; } this._boundsDirty = !1; return getGeometryBounds.getGeometryBounds(this, "aPosition", this._bounds); } unload() { this.emit("unload", this); for (const key in this._gpuData) { this._gpuData[key]?.destroy(); } this._gpuData = Object.create(null); } destroy(destroyBuffers = !1) { this.emit("destroy", this); this.removeAllListeners(); destroyBuffers && this.buffers.forEach(buffer => buffer.destroy()); this.unload(); this.indexBuffer?.destroy(); this._bounds = this.indexBuffer = this.buffers = this.attributes = null; } } exports.Geometry = Geometry; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$geometry$Geometry.js.map