UNPKG

@awayjs/renderer

Version:
44 lines (43 loc) 1.82 kB
import { UUID, } from '@awayjs/core'; import { AbstractionSet } from '@awayjs/core/dist/lib/base/AbstractionSet'; var RenderGroup = /** @class */ (function () { function RenderGroup(rendererClass) { this._store = []; this.materialStore = {}; this.materialClassPool = {}; this.id = UUID.Next(); this.abstractions = new AbstractionSet(this); this._rendererClass = rendererClass; } RenderGroup.prototype.requestAbstraction = function (asset) { return this._store.length ? this._store.pop() : new this._rendererClass(); }; RenderGroup.prototype.storeAbstraction = function (abstraction) { this._store.push(abstraction); }; RenderGroup.prototype.getRenderer = function (node) { return this.abstractions.getAbstraction(node); }; RenderGroup.getInstance = function (rendererClass) { return RenderGroup._renderGroupPool[rendererClass.assetType] || (RenderGroup._renderGroupPool[rendererClass.assetType] = new RenderGroup(rendererClass)); }; RenderGroup.prototype.registerMaterial = function (renderMaterialClass, materialClass) { this.materialClassPool[materialClass.assetType] = renderMaterialClass; this.materialStore[materialClass.assetType] = []; }; /** * * @param imageObjectClass */ RenderGroup.registerElements = function (renderElementsClass, elementsClass) { RenderGroup._renderElementsClassPool[elementsClass.assetType] = renderElementsClass; }; RenderGroup.getRenderElementsClass = function (asset) { return RenderGroup._renderElementsClassPool[asset.assetType]; }; RenderGroup._renderGroupPool = {}; RenderGroup._renderElementsClassPool = {}; return RenderGroup; }()); export { RenderGroup };