@awayjs/renderer
Version:
Renderer for AwayJS
90 lines (89 loc) • 3.25 kB
JavaScript
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 };