UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.64 kB
import{Vec3 as e}from"../../../core/math/vec3.js";import{BoundingBox as t}from"../../../core/shape/bounding-box.js";import{getDefaultMaterial as a}from"../../../scene/materials/default-material.js";import{Component as s}from"../component.js";import{ComponentSystem as o}from"../system.js";import{RenderComponent as r}from"./component.js";import{RenderComponentData as n}from"./data.js";const i=["enabled"],m=["material","meshInstances","asset","materialAssets","castShadows","receiveShadows","castShadowsLightmap","lightmapped","lightmapSizeMultiplier","renderStyle","type","layers","isStatic","batchGroupId","rootBone"];class l extends o{constructor(e){super(e),this.id="render",this.ComponentType=r,this.DataType=n,this.schema=i,this.defaultMaterial=a(e.graphicsDevice),this.on("beforeremove",this.onRemove,this)}initializeComponentData(a,s,o){null!==s.batchGroupId&&void 0!==s.batchGroupId||(s.batchGroupId=-1),s.layers&&s.layers.length&&(s.layers=s.layers.slice(0));for(let e=0;e<m.length;e++)s.hasOwnProperty(m[e])&&(a[m[e]]=s[m[e]]);s.aabbCenter&&s.aabbHalfExtents&&(a.customAabb=new t(new e(s.aabbCenter),new e(s.aabbHalfExtents))),super.initializeComponentData(a,s,i)}cloneComponent(e,t){const a={};for(let t=0;t<m.length;t++)a[m[t]]=e.render[m[t]];a.enabled=e.render.enabled,delete a.meshInstances;const s=this.addComponent(t,a),o=e.render.meshInstances,r=o.map((e=>e.mesh));s._onSetMeshes(r);for(let e=0;e<o.length;e++)s.meshInstances[e].material=o[e].material;return e.render.customAabb&&(s.customAabb=e.render.customAabb.clone()),s}onRemove(e,t){t.onRemove()}}s._buildAccessors(r.prototype,i);export{l as RenderComponentSystem};