UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.33 kB
import{BoundingBox as s}from"../../core/shape/bounding-box.js";import{BoundingSphere as t}from"../../core/shape/bounding-sphere.js";import{LIGHTTYPE_DIRECTIONAL as e}from"../../scene/constants.js";const a=new t;class i{constructor(t,i,h){this.scene=t,this.light=i,this.store(),i.numCascades=1,this.scene.clusteredLightingEnabled&&(i.castShadows=i.bakeShadows&&h.shadowsEnabled),i.type!==e&&(i._node.getWorldTransform(),i.getBoundingSphere(a),this.lightBounds=new s,this.lightBounds.center.copy(a.center),this.lightBounds.halfExtents.set(a.radius,a.radius,a.radius))}store(){this.mask=this.light.mask,this.shadowUpdateMode=this.light.shadowUpdateMode,this.enabled=this.light.enabled,this.intensity=this.light.intensity,this.rotation=this.light._node.getLocalRotation().clone(),this.numCascades=this.light.numCascades,this.castShadows=this.light._castShadows}restore(){const s=this.light;s.mask=this.mask,s.shadowUpdateMode=this.shadowUpdateMode,s.enabled=this.enabled,s.intensity=this.intensity,s._node.setLocalRotation(this.rotation),s.numCascades=this.numCascades,s._castShadows=this.castShadows}startBake(){this.light.enabled=!0,this.light._destroyShadowMap(),this.light.beginFrame()}endBake(s){const t=this.light;t.enabled=!1,t.shadowMap&&(t.shadowMap.cached&&s.add(t,t.shadowMap),t.shadowMap=null)}}export{i as BakeLight};