73 lines
2.9 KiB
JavaScript
73 lines
2.9 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$buffer$Buffer = function(global, require, module, exports) {
|
|
global = require("module$node_modules$eventemitter3$index");
|
|
var uid = require("module$node_modules$pixi_DOT_js$lib$utils$data$uid"), _const = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$buffer$const");
|
|
"use strict";
|
|
class Buffer extends global {
|
|
constructor(options) {
|
|
let {data, size} = options;
|
|
const {usage, label, shrinkToFit} = options;
|
|
super();
|
|
this._gpuData = Object.create(null);
|
|
this._gcLastUsed = -1;
|
|
this.autoGarbageCollect = !0;
|
|
this.uid = uid.uid("buffer");
|
|
this._resourceType = "buffer";
|
|
this._resourceId = uid.uid("resource");
|
|
this._touched = 0;
|
|
this._updateID = 1;
|
|
this._dataInt32 = null;
|
|
this.shrinkToFit = !0;
|
|
this.destroyed = !1;
|
|
data instanceof Array && (data = new Float32Array(data));
|
|
this._data = data;
|
|
size ?? (size = data?.byteLength);
|
|
this.descriptor = {size, usage, mappedAtCreation:!!data, label};
|
|
this.shrinkToFit = shrinkToFit ?? !0;
|
|
}
|
|
get data() {
|
|
return this._data;
|
|
}
|
|
set data(value) {
|
|
this.setDataWithSize(value, value.length, !0);
|
|
}
|
|
get dataInt32() {
|
|
this._dataInt32 || (this._dataInt32 = new Int32Array(this.data.buffer));
|
|
return this._dataInt32;
|
|
}
|
|
get static() {
|
|
return !!(this.descriptor.usage & _const.BufferUsage.STATIC);
|
|
}
|
|
set static(value) {
|
|
this.descriptor.usage = value ? this.descriptor.usage | _const.BufferUsage.STATIC : this.descriptor.usage & ~_const.BufferUsage.STATIC;
|
|
}
|
|
setDataWithSize(value, size, syncGPU) {
|
|
this._updateID++;
|
|
this._updateSize = size * value.BYTES_PER_ELEMENT;
|
|
this._data === value ? syncGPU && this.emit("update", this) : (size = this._data, this._data = value, this._dataInt32 = null, size && size.length === value.length ? syncGPU && this.emit("update", this) : !this.shrinkToFit && size && value.byteLength < size.byteLength ? syncGPU && this.emit("update", this) : (this.descriptor.size = value.byteLength, this._resourceId = uid.uid("resource"), this.emit("change", this)));
|
|
}
|
|
update(sizeInBytes) {
|
|
this._updateSize = sizeInBytes ?? this._updateSize;
|
|
this._updateID++;
|
|
this.emit("update", this);
|
|
}
|
|
unload() {
|
|
this.emit("unload", this);
|
|
for (const key in this._gpuData) {
|
|
this._gpuData[key]?.destroy();
|
|
}
|
|
this._gpuData = Object.create(null);
|
|
}
|
|
destroy() {
|
|
this.destroyed = !0;
|
|
this.unload();
|
|
this.emit("destroy", this);
|
|
this.emit("change", this);
|
|
this.descriptor = this._data = null;
|
|
this.removeAllListeners();
|
|
}
|
|
}
|
|
exports.Buffer = Buffer;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$buffer$Buffer.js.map
|