UNPKG

@animech-public/playcanvas

Version:
44 lines (41 loc) 1.26 kB
import { Entity } from '../entity.js'; import { GSplatInstance } from '../../scene/gsplat/gsplat-instance.js'; import { GSplat } from '../../scene/gsplat/gsplat.js'; import { GSplatCompressed } from '../../scene/gsplat/gsplat-compressed.js'; class GSplatResource { constructor(device, splatData) { this.device = void 0; this.splatData = void 0; this.splat = null; this.device = device; this.splatData = splatData; } destroy() { var _this$splat; this.device = null; this.splatData = null; (_this$splat = this.splat) == null || _this$splat.destroy(); this.splat = null; } createSplat() { if (!this.splat) { this.splat = this.splatData.isCompressed ? new GSplatCompressed(this.device, this.splatData) : new GSplat(this.device, this.splatData); } return this.splat; } instantiate(options = {}) { const splatInstance = this.createInstance(options); const entity = new Entity(); const component = entity.addComponent('gsplat', { instance: splatInstance }); entity.setLocalEulerAngles(0, 0, 180); component.customAabb = splatInstance.splat.aabb.clone(); return entity; } createInstance(options = {}) { const splat = this.createSplat(); return new GSplatInstance(splat, options); } } export { GSplatResource };