UNPKG

@awayjs/renderer

Version:
90 lines (89 loc) 3.25 kB
import { __extends } from "tslib"; import { AbstractionBase } from '@awayjs/core'; import { AbstractionSet } from '@awayjs/core/dist/lib/base/AbstractionSet'; /** * @class away.pool.RenderEntity */ var RenderEntity = /** @class */ (function (_super) { __extends(RenderEntity, _super); function RenderEntity() { var _this = _super.call(this) || this; _this.abstractions = new AbstractionSet(_this); return _this; } Object.defineProperty(RenderEntity.prototype, "node", { /** * * @returns {ContainerNode} */ get: function () { return this._asset; }, enumerable: false, configurable: true }); Object.defineProperty(RenderEntity.prototype, "renderer", { /** * * @returns {RendererBase} */ get: function () { return this._pool; }, enumerable: false, configurable: true }); /** * //TODO * * @param materialClassGL */ RenderEntity.prototype.init = function (node, renderer) { _super.prototype.init.call(this, node, renderer); node.container._renderObjects[renderer.id] = this; }; RenderEntity.prototype.onClear = function () { this.abstractions.forEach(function (renderable) { return renderable.onClear(); }); var container = this._asset.container; if (container) delete container._renderObjects[this.renderer.id]; this.renderSceneTransform = null; this.colorTransform = null; this.maskOwners = null; _super.prototype.onClear.call(this); }; RenderEntity.prototype.onInvalidate = function () { _super.prototype.onInvalidate.call(this); }; RenderEntity.prototype._onInvalidateElements = function () { // for (const key in this._abstractionPool) // (this._abstractionPool[key] as _Render_RenderableBase)._onInvalidateElements(); }; RenderEntity.prototype._onInvalidateMaterial = function () { // for (const key in this._abstractionPool) // (this._abstractionPool[key] as _Render_RenderableBase)._onInvalidateMaterial(); }; RenderEntity.prototype._onInvalidateStyle = function () { // for (const key in this._abstractionPool) // (this._abstractionPool[key] as _Render_RenderableBase)._onInvalidateStyle(); }; RenderEntity.prototype.requestAbstraction = function (asset) { var store = RenderEntity._store[asset.assetType]; return store.length ? store.pop() : new RenderEntity._renderRenderableClassPool[asset.assetType](); }; RenderEntity.prototype.storeAbstraction = function (abstraction, assetType) { RenderEntity._store[assetType].push(abstraction); }; /** * * @param imageObjectClass */ RenderEntity.registerRenderable = function (renderStateClass, assetClass) { RenderEntity._renderRenderableClassPool[assetClass.assetType] = renderStateClass; RenderEntity._store[assetClass.assetType] = []; }; RenderEntity._store = {}; RenderEntity._renderRenderableClassPool = {}; return RenderEntity; }(AbstractionBase)); export { RenderEntity };