@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 1.14 kB
JavaScript
import{Vec3 as e}from"../../../core/math/vec3.js";import{BoundingBox as t}from"../../../core/shape/bounding-box.js";import{Component as o}from"../component.js";import{ComponentSystem as n}from"../system.js";import{GSplatComponent as s}from"./component.js";import{GSplatComponentData as a}from"./data.js";const r=["enabled"],i=["instance","asset","layers"];class m extends n{constructor(e){super(e),this.id="gsplat",this.ComponentType=s,this.DataType=a,this.schema=r,this.on("beforeremove",this.onRemove,this)}initializeComponentData(o,n,s){n.layers&&n.layers.length&&(n.layers=n.layers.slice(0));for(let e=0;e<i.length;e++)n.hasOwnProperty(i[e])&&(o[i[e]]=n[i[e]]);n.aabbCenter&&n.aabbHalfExtents&&(o.customAabb=new t(new e(n.aabbCenter),new e(n.aabbHalfExtents))),super.initializeComponentData(o,n,r)}cloneComponent(e,t){const o=e.gsplat,n={};for(let e=0;e<i.length;e++)n[i[e]]=o[i[e]];n.enabled=o.enabled,delete n.instance;const s=this.addComponent(t,n);return s.instance=o.instance.clone(),o.customAabb&&(s.customAabb=o.customAabb.clone()),s}onRemove(e,t){t.onRemove()}}o._buildAccessors(s.prototype,r);export{m as GSplatComponentSystem};