<!-- SOLID-PLAYTIME · part 88 -->
eturn super.fromJSON(t),this.aX=t.aX,this.aY=t.aY,this.xRadius=t.xRadius,this.yRadius=t.yRadius,this.aStartAngle=t.aStartAngle,this.aEndAngle=t.aEndAngle,this.aClockwise=t.aClockwise,this.aRotation=t.aRotation,this}}class Zo extends zc{constructor(t=1,e=0){let n=(1+Math.sqrt(5))/2,i=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(i,s,t,e);this.type="IcosahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new Zo(t.radius,t.detail)}}class ns extends zc{constructor(t=1,e=0){let n=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],i=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2];super(n,i,t,e);this.type="OctahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new ns(t.radius,t.detail)}}class qn extends me{constructor(t=1,e=1,n=1,i=1){super();this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:n,heightSegments:i};let s=t/2,a=e/2,r=Math.floor(n),o=Math.floor(i),l=r+1,c=o+1,u=t/r,f=e/o,h=[],p=[],v=[],y=[];for(let U=0;U<c;U++){let d=U*f-a;for(let g=0;g<l;g++){let m=g*u-s;p.push(m,-d,0),v.push(0,0,1),y.push(g/r),y.push(1-U/o)}}for(let U=0;U<o;U++)for(let d=0;d<r;d++){let g=d+l*U,m=d+l*(U+1),x=d+1+l*(U+1),S=d+1+l*U;h.push(g,m,S),h.push(m,x,S)}this.setIndex(h),this.setAttribute("position",new Zt(p,3)),this.setAttribute("normal",new Zt(v,3)),this.setAttribute("uv",new Zt(y,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new qn(t.width,t.height,t.widthSegments,t.heightSegments)}}class dn extends me{constructor(t=1,e=32,n=16,i=0,s=Math.PI*2,a=0,r=Math.PI){super();this.type="SphereGeometry",this.parameters={radius:t,widthSegments:e,heightSegments:n,phiStart:i,phiLength:s,thetaStart:a,thetaLength:r},e=Math.max(3,Math.floor(e)),n=Math.max(2,Math.floor(n));let o=Math.min(a+r,Math.PI),l=0,c=[],u=new C,f=new C,h=[],p=[],v=[],y=[];for(let U=0;U<=n;U++){let d=[],g=U/n,m=0;if(U===0&&a===0)m=0.5/e;else if(U===n&&o===Math.PI)m=-0.5/e;for(let x=0;x<=e;x++){let S=x/e;u.x=-t*Math.cos(i+S*s)*Math.sin(a+g*r),u.y=t*Math.cos(a+g*r),u.z=t*Math.sin(i+S*s)*Math.sin(a+g*r),p.push(u.x,u.y,u.z),f.copy(u).normalize(),v.push(f.x,f.y,f.z),y.push(S+m,1-g),d.push(l++)}c.push(d)}for(let U=0;U<n;U++)for(let d=0;d<e;d++){let g=c[U][d+1],m=c[U][d],x=c[U+1][d],S=c[U+1][d+1];if(U!==0||a>0)h.push(g,m,S);if(U!==n-1||o<Math.PI)h.push(m,x,S)}this.setIndex(h),this.setAttribute("position",new Zt(p,3)),this.setAttribute("normal",new Zt(v,3)),this.setAttribute("uv",new Zt(y,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new dn(t.radius,t.widthSegments,t.heightSegments,t.phiStart,t.phiLength,t.thetaStart,t.thetaLength)}}class cn extends me{constructor(t=1,e=0.4,n=12,i=48,s=Math.PI*2){super();this.type="TorusGeometry",this.parameters={radius:t,tube:e,radialSegments:n,tubularSegments:i,arc:s},n=Math.floor(n),i=Math.floor(i);let a=[],r=[],o=[],l=[],c=new C,u=new C,f=new C;for(let h=0;h<=n;h++)for(let p=0;p<=i;p++){let v=p/i*s,y=h/n*Math.PI*2;u.x=(t+e*Math.cos(y))*Math.cos(v),u.y=(t+e*Math.cos(y))*Math.sin(v),u.z=e*Math.sin(y),r.push(u.x,u.y,u.z),c.x=t*Math.cos(v),c.y=t*Math.sin(v),f.subVectors(u,c).normalize(),o.push(f.x,f.y,f.z),l.push(p/i),l.push(h/n)}for(let h=1;h<=n;h++)for(let p=1;p<=i;p++){let v=(i+1)*h+p-1,y=(i+1)*(h-1)+p-1,U=(i+1)*(h-1)+p,d=(i+1)*h+p;a.push(v,y,d),a.push(y,U,d)}this.setIndex(a),this.setAttribute("position",new Zt(r,3)),this.setAttribute("normal",new Zt(o,3)),this.setAttribute("uv",new Zt(l,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new cn(t.radius,t.tube,t.radialSegments,t.tubularSegments,t.arc)}}class Pe extends qi{constructor(t){super();this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Xt(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Xt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Nt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Dn,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:""},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapInte