UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

98 lines (79 loc) 1.97 kB
import { assert } from "../../../../core/assert.js"; let id_counter = 0; /** * @template T */ export class ResourceEntry { /** * * @type {number} */ resource_id = id_counter++; /** * * @type {ResourceDescriptor<T>|null} */ resource_descriptor = null; /** * Every time resource is modified - version increases * @type {number} */ resource_version = 0; /** * Actual resource handle * @type {T|null} */ resource = null; /** * Imported or transient resource. * Transient resource only exists in the graph, it will be reclaimed once the execution is done * @type {boolean} */ imported = false; /** * Node that created this resource * @type {RenderPassNode|null} */ producer = null; /** * * @type {RenderPassNode|null} */ last = null; /** * Creates actual resource * @param {RenderResourceManager} resources */ create(resources) { assert.ok(this.isTransient(), 'Only transient resources can be allocated'); this.resource = resources.get(this.resource_descriptor) } /** * De-allocated memory for the resource * @param {RenderResourceManager} resources */ destroy(resources) { assert.ok(this.isTransient(), 'Only transient resources can be destroyed, that is resources that are created by the graph itself'); resources.release(this.resource); } /** * * @return {boolean} */ isImported() { return this.imported; } /** * * @return {boolean} */ isTransient() { return !this.imported; } toString() { if (this.resource_descriptor !== null) { return this.resource_descriptor.toString(); } return ""; } }