UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

54 lines (51 loc) 1.85 kB
import { Render } from '../../scene/render.js'; import { ResourceHandler } from './handler.js'; function onContainerAssetLoaded(containerAsset) { var renderAsset = this; if (!renderAsset.resource) return; var containerResource = containerAsset.resource; var render = containerResource.renders && containerResource.renders[renderAsset.data.renderIndex]; if (render) { renderAsset.resource.meshes = render.resource.meshes; } } function onContainerAssetAdded(containerAsset) { var renderAsset = this; renderAsset.registry.off("load:" + containerAsset.id, onContainerAssetLoaded, renderAsset); renderAsset.registry.on("load:" + containerAsset.id, onContainerAssetLoaded, renderAsset); renderAsset.registry.off("remove:" + containerAsset.id, onContainerAssetRemoved, renderAsset); renderAsset.registry.once("remove:" + containerAsset.id, onContainerAssetRemoved, renderAsset); if (!containerAsset.resource) { renderAsset.registry.load(containerAsset); } else { onContainerAssetLoaded.call(renderAsset, containerAsset); } } function onContainerAssetRemoved(containerAsset) { var renderAsset = this; renderAsset.registry.off("load:" + containerAsset.id, onContainerAssetLoaded, renderAsset); if (renderAsset.resource) { renderAsset.resource.destroy(); } } class RenderHandler extends ResourceHandler { open(url, data) { return new Render(); } patch(asset, registry) { if (!asset.data.containerAsset) { return; } var containerAsset = registry.get(asset.data.containerAsset); if (!containerAsset) { registry.once("add:" + asset.data.containerAsset, onContainerAssetAdded, asset); return; } onContainerAssetAdded.call(asset, containerAsset); } constructor(app){ super(app, 'render'); this._registry = app.assets; } } export { RenderHandler };