tscratch 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.cjs +1 -1
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +100 -18
- package/dist/client/index.d.ts +100 -18
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +5 -5
- package/dist/server/index.d.ts +5 -5
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
package/dist/client/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r=document.getElementById("game-window")||document.createElement("canvas"),h=r.getContext("2d"),b=document.createElement("canvas"),a=b.getContext("2d");b.id="pen-canvas";var k=16/9,B;function G(){r.width=k*B,r.height=B,b.width=k*B,b.height=B}function q(o){B=o,G()}function U(o){k=o,G()}r.parentElement?.insertBefore(b,r);q(500);var c=class o{x=0;y=0;dir=0;size=1;scene="main";hidden=!1;layer=0;cachedPath=null;pathDirty=!0;static collisionCanvas=null;static collisionCtx=null;refresh(){u.init().refresh()}invalidatePath(){this.pathDirty=!0,this.cachedPath=null}getCachedPath(){return(this.pathDirty||!this.cachedPath)&&(this.cachedPath=this.getPath(),this.pathDirty=!1),this.cachedPath}constructor(t){Object.assign(this,t),u.init().addSprite(this)}getCreateOptions(){return{x:this.x,y:this.y,dir:this.dir,size:this.size,scene:this.scene,layer:this.layer,hidden:this.hidden}}clone(t){return this.create({...this.getCreateOptions(),...t})}touching(t){if(this.hidden||t.hidden||this.scene!=="*"&&t.scene!=="*"&&this.scene!==t.scene)return!1;let i=this.getBoundingBox(),e=t.getBoundingBox();if(!(Math.abs(i.x-e.x)<(i.width+e.width)/2&&Math.abs(i.y-e.y)<(i.height+e.height)/2))return!1;let n=i.x-i.width/2,l=i.y+i.height/2,p=i.x+i.width/2,d=i.y-i.height/2,m=e.x-e.width/2,g=e.y+e.height/2,C=e.x+e.width/2,f=e.y-e.height/2,O=Math.max(n,m),P=Math.min(d,f),S=Math.min(p,C),x=Math.max(l,g),y=S-O,M=x-P;if(y<=1||M<=1)return!1;o.collisionCanvas||(o.collisionCanvas=document.createElement("canvas"),o.collisionCtx=o.collisionCanvas.getContext("2d",{willReadFrequently:!0}));let w=o.collisionCtx;o.collisionCanvas.width<y&&(o.collisionCanvas.width=y),o.collisionCanvas.height<M&&(o.collisionCanvas.height=M),w.clearRect(0,0,y,M);let $=(v,J)=>{w.save();let K=v.x-O,Q=x-v.y;w.translate(K,Q),w.rotate(v.toRadians(v.dir)),w.fillStyle=J,w.fill(v.getCachedPath()),w.restore()};$(this,"red");let H=w.getImageData(0,0,y,M).data;w.clearRect(0,0,y,M),$(t,"blue");let j=w.getImageData(0,0,y,M).data;for(let v=3;v<H.length;v+=4)if(H[v]>0&&j[v]>0)return!0;return!1}toRadians(t){return t*Math.PI/180}toDegrees(t){return t*180/Math.PI}distanceTo(t,i){return Math.hypot(t-this.x,i-this.y)}move(t){this.x+=t*Math.sin(this.toRadians(this.dir)),this.y+=t*Math.cos(this.toRadians(this.dir)),this.refresh()}turn(t){this.dir+=t,this.refresh()}point(t){this.dir=t,this.refresh()}pointTowards(t,i){this.dir=90-this.toDegrees(Math.atan2(i-this.y,t-this.x)),this.refresh()}setX(t){this.x=t,this.refresh()}setY(t){this.y=t,this.refresh()}goTo(t,i){this.x=t,this.y=i,this.refresh()}changeX(t){this.x+=t,this.refresh()}changeY(t){this.y+=t,this.refresh()}show(){this.hidden=!1,this.refresh()}hide(){this.hidden=!0,this.refresh()}setSize(t){this.size=t>0?t:0,this.invalidatePath(),this.refresh()}changeSize(t){this.size=this.size+t>0?this.size+t:0,this.invalidatePath(),this.refresh()}goToLayer(t){this.layer=t,this.refresh()}changeLayer(t){this.layer+=t,this.refresh()}};var u=class o{static instance;loopRunning=!1;gameLoop=null;maxFPS=24;deltaTime=1/this.maxFPS;lastFrame=performance.now();refreshScheduled=!1;animationFrameId=null;sounds=[];mouseX=0;mouseY=0;mouseDown=!1;mouseClicked=!1;keysPressed=new Set;currentScene="main";sceneMap=new Map;variableMap=new Map;static init(){return this.instance||(this.instance=new o),this.instance}changeScene(t){this.sceneMap.get(t)||this.sceneMap.set(t,{sprites:[],loop:null}),this.loopRunning=!1,this.currentScene=t,this.gameLoop=this.sceneMap.get(t).loop,this.setMaxFramesPerSecond(this.maxFPS)}setLoop(t,i){if(!this.sceneMap.get(t)){this.sceneMap.set(t,{sprites:[],loop:i}),t===this.currentScene&&this.changeScene(t);return}this.sceneMap.get(t).loop=i,t===this.currentScene&&this.changeScene(t)}pauseLoop(){this.loopRunning=!1,this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}resumeLoop(){this.loopRunning=!0,this.setMaxFramesPerSecond(this.maxFPS)}addSprite(t){let{scene:i,layer:e}=t;if(!this.sceneMap.get(i)){this.sceneMap.set(i,{sprites:[t],loop:null});return}let s=this.sceneMap.get(i).sprites.findIndex(n=>n.layer>e);if(s===-1){this.sceneMap.get(i).sprites.push(t);return}this.sceneMap.get(i).sprites.splice(s,0,t),this.refresh()}removeSprite(t){let{scene:i}=t;this.sceneMap.get(i)&&(this.sceneMap.get(i).sprites=this.sceneMap.get(i).sprites.filter(e=>e!==t),this.refresh())}async setMaxFramesPerSecond(t){this.maxFPS=t;let i=this.gameLoop;if(!i)return;this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.loopRunning=!0;let e=1e3/t,s=0,n=async l=>{if(!this.loopRunning)return;let p=l-this.lastFrame;this.lastFrame=l,s+=p,s>=e&&(this.deltaTime=s/1e3,s=s%e,i&&await i()),this.animationFrameId=requestAnimationFrame(n)};this.lastFrame=performance.now(),this.animationFrameId=requestAnimationFrame(n)}refresh(){this.refreshScheduled||(this.refreshScheduled=!0,requestAnimationFrame(()=>{this.refreshScheduled=!1,h.clearRect(0,0,r.width,r.height),[...this.sceneMap.get(this.currentScene).sprites,...this.sceneMap.get("*").sprites].forEach(i=>{i.hidden||i.draw()})}))}async wait(t){return new Promise(i=>setTimeout(i,t))}async waitUntil(t){return new Promise(i=>{let e=()=>{t()?i():setTimeout(e,1e3/this.maxFPS)};e()})}setVariable(t,i){this.variableMap.set(t,i)}getVariable(t){return this.variableMap.get(t)}hovering(t){let{mouseX:i,mouseY:e}=this,s=i+r.width/2,n=r.height/2-e,l=s-(t.x+r.width/2),p=n-(r.height/2-t.y),d=-this.toRadians(t.dir),m=l*Math.cos(d)-p*Math.sin(d),g=l*Math.sin(d)+p*Math.cos(d);return h.isPointInPath(t.getCachedPath(),m,g)}keyPressed(t){switch(t){case"any":return this.keysPressed.size>0;case"up":return this.keysPressed.has("ArrowUp");case"down":return this.keysPressed.has("ArrowDown");case"left":return this.keysPressed.has("ArrowLeft");case"right":return this.keysPressed.has("ArrowRight");case"space":return this.keysPressed.has(" ");default:return this.keysPressed.has(t)}}playSound(t){let i=new Audio(t);return this.sounds.push(i),i.play(),i}stopSound(t){t.pause(),t.currentTime=0,this.sounds=this.sounds.filter(i=>i!==t)}stopAllSounds(){this.sounds.forEach(t=>{t.pause(),t.currentTime=0}),this.sounds=[]}pickRandom(t,i){return t>i&&([t,i]=[i,t]),Math.floor(Math.random()*(i-t+1)+t)}dotProduct(...t){let[i,e]=t;switch(i.length){case 2:return i[0]*e[0]+i[1]*e[1];case 3:return i[0]*e[0]+i[1]*e[1]+i[2]*e[2];case 4:return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]+i[3]*e[3]}}sin(t){return Math.sin(this.toRadians(t))}cos(t){return Math.cos(this.toRadians(t))}tan(t){return Math.tan(this.toRadians(t))}csc(t){return 1/Math.sin(this.toRadians(t))}sec(t){return 1/Math.cos(this.toRadians(t))}cot(t){return 1/Math.tan(this.toRadians(t))}asin(t){return this.toDegrees(Math.asin(t))}acos(t){return this.toDegrees(Math.acos(t))}acsc(t){return this.toDegrees(Math.asin(1/t))}asec(t){return this.toDegrees(Math.acos(1/t))}toRadians(t){return t*Math.PI/180}toDegrees(t){return t*180/Math.PI}constructor(){this.setMaxFramesPerSecond(24),this.sceneMap.set("main",{loop:null,sprites:[]}),this.sceneMap.set("*",{loop:null,sprites:[]}),b.addEventListener("mousemove",t=>{this.mouseX=t.clientX-b.offsetLeft-b.width/2,this.mouseY=-(t.clientY-b.offsetTop-b.height/2)}),b.addEventListener("mousedown",()=>{this.mouseDown=!0}),b.addEventListener("mouseup",()=>{this.mouseDown=!1}),b.addEventListener("click",()=>{this.mouseClicked=!0,setTimeout(()=>this.mouseClicked=!1,0)}),addEventListener("keydown",t=>{t.repeat||this.keysPressed.add(t.key)}),addEventListener("keyup",t=>{this.keysPressed.delete(t.key)})}};import{io as Z}from"socket.io-client";var R=class o{static instance;socket;static connect(t="http://localhost:3000"){return this.instance||(this.instance=new o(t)),this.instance}disconnect(){this.socket.disconnect()}constructor(t){this.socket=Z(t)}broadcast(t,i){this.socket.emit(t,i)}on(t,i){this.socket.on(t,i)}};var T=class o extends c{discriminant="rectangle";tags=new Set(["rectangle"]);width;height;color;outlineColor;outlineWidth;getBoundingBox(){let t=u.init(),i=this.width/2,e=this.height/2,s=t.cos(this.dir),n=t.sin(this.dir),l=2*(Math.abs(i*s)+Math.abs(e*n))*this.size,p=2*(Math.abs(i*n)+Math.abs(e*s))*this.size;return{x:this.x,y:this.y,width:l,height:p}}getPath(){let t=new Path2D;return t.rect(-this.width/2*this.size,-this.height/2*this.size,this.width*this.size,this.height*this.size),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),width:this.width,height:this.height,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setWidth(t){this.width=t,this.invalidatePath(),this.refresh()}setHeight(t){this.height=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.width=t?.width??50,this.height=t?.height??50,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var Y=class o extends c{discriminant="square";tags=new Set(["square"]);sideLength;color;outlineColor;outlineWidth;getBoundingBox(){let t=u.init(),i=this.sideLength/2,e=t.cos(this.dir),s=t.sin(this.dir),n=2*(Math.abs(i*e)+Math.abs(i*s))*this.size;return{x:this.x,y:this.y,width:n,height:n}}getPath(){let t=new Path2D;return t.rect(-this.sideLength/2*this.size,-this.sideLength/2*this.size,this.sideLength*this.size,this.sideLength*this.size),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),sideLength:this.sideLength,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setSideLength(t){this.sideLength=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.sideLength=t?.sideLength??50,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var X=class o extends c{discriminant="oval";tags=new Set(["oval"]);radX;radY;color;outlineColor;outlineWidth;getBoundingBox(){let t=u.init(),i=this.radX,e=this.radY,s=t.cos(this.dir),n=t.sin(this.dir),l=2*(Math.abs(i*s)+Math.abs(e*n))*this.size,p=2*(Math.abs(i*n)+Math.abs(e*s))*this.size;return{x:this.x,y:this.y,width:l,height:p}}getPath(){let t=new Path2D;return t.ellipse(0,0,this.radX*this.size,this.radY*this.size,0,0,Math.PI*2),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),radX:this.radX,radY:this.radY,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setRadX(t){this.radX=t,this.invalidatePath(),this.refresh()}setRadY(t){this.radY=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.radX=t?.radX??25,this.radY=t?.radY??25,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var z=class o extends c{discriminant="circle";tags=new Set(["circle"]);radius;color;outlineColor;outlineWidth;getBoundingBox(){return{x:this.x,y:this.y,width:this.radius*2*this.size,height:this.radius*2*this.size}}getPath(){let t=new Path2D;return t.ellipse(0,0,this.radius*this.size,this.radius*this.size,0,0,Math.PI*2),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),radius:this.radius,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setRadius(t){this.radius=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.radius=t?.radius??25,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var L=class o extends c{discriminant="arc";tags=new Set(["arc"]);radius;angle;color;outlineColor;outlineWidth;getBoundingBox(){return{x:this.x,y:this.y,width:this.radius*2*this.size,height:this.radius*2*this.size}}getPath(){let t=new Path2D;return t.arc(0,0,this.radius*this.size,this.toRadians(this.angle/2-90),this.toRadians(-this.angle/2-90)),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),radius:this.radius,angle:this.angle,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setRadius(t){this.radius=t,this.invalidatePath(),this.refresh()}setAngle(t){this.angle=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.radius=t?.radius??25,this.angle=t?.angle??270,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var F=class o extends c{discriminant="regularpolygon";tags=new Set(["regularpolygon"]);sides;radius;color;outlineColor;outlineWidth;getBoundingBox(){return{x:this.x,y:this.y,width:this.radius*2*this.size,height:this.radius*2*this.size}}getPath(){let t=new Path2D,i=2*Math.PI/this.sides;t.moveTo(this.radius*this.size,0);for(let e=1;e<this.sides;e++)t.lineTo(this.radius*Math.cos(i*e)*this.size,this.radius*Math.sin(i*e)*this.size);return t.closePath(),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),sides:this.sides,radius:this.radius,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setSides(t){this.sides=t,this.invalidatePath(),this.refresh()}setRadius(t){this.radius=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.sides=t?.sides??5,this.radius=t?.radius??50,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var D=class o extends c{discriminant="custompolygon";tags=new Set(["custompolygon"]);vertices;color;outlineColor;outlineWidth;getBoundingBox(){let t=u.init(),i=t.cos(this.dir),e=t.sin(this.dir),s=1/0,n=-1/0,l=1/0,p=-1/0;if(this.vertices.length===0)return{x:this.x,y:this.y,width:0,height:0};for(let f of this.vertices){let O=f[0]*i-f[1]*e,P=f[0]*e+f[1]*i,S=this.x+O,x=this.y+P;S<s&&(s=S),S>n&&(n=S),x<l&&(l=x),x>p&&(p=x)}let d=n-s,m=p-l,g=s+d/2,C=l+m/2;return{x:g*this.size,y:C*this.size,width:d*this.size,height:m*this.size}}getPath(){let t=new Path2D;if(this.vertices.length<2)return t;let i=this.vertices,[e,...s]=i;t.moveTo(e[0]*this.size,-e[1]*this.size);for(let n of s)t.lineTo(n[0]*this.size,-n[1]*this.size);return t.closePath(),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir));let n=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(n),this.outlineWidth&&i.stroke(n),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),vertices:this.vertices,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setVertices(t){this.vertices=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.vertices=t?.vertices??[],this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var I=class o extends c{discriminant="pen";tags=new Set(["pen"]);drawing;penSize;color;getBoundingBox(){return{x:this.x,y:this.y,width:this.penSize*this.penSize,height:this.penSize*this.penSize}}getPath(){return new Path2D}draw(){}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),drawing:this.drawing,penSize:this.penSize,color:this.color}}up(){this.drawing=!1}down(){this.drawing=!0}stamp(t){t.draw(!0)}eraseAll(){a.clearRect(0,0,r.width,r.height)}dot(){a.fillStyle=this.color,a.fillRect(this.x-this.penSize/2+r.width/2,-this.y-this.penSize/2+r.height/2,this.penSize,this.penSize)}drawLine(t,i){a.beginPath(),a.moveTo(t+r.width/2,-i+r.height/2),a.lineTo(this.x+r.width/2,-this.y+r.height/2),a.lineWidth=this.penSize,a.strokeStyle=this.color,a.stroke()}move(t){let i=this.x,e=this.y;this.x+=t*Math.sin(this.toRadians(this.dir)),this.y+=t*Math.cos(this.toRadians(this.dir)),this.drawing&&this.drawLine(i,e),this.refresh()}setX(t){let i=this.x,e=this.y;this.x=t,this.drawing&&this.drawLine(i,e),this.refresh()}setY(t){let i=this.x,e=this.y;this.y=t,this.drawing&&this.drawLine(i,e),this.refresh()}goTo(t,i){let e=this.x,s=this.y;this.x=t,this.y=i,this.drawing&&this.drawLine(e,s),this.refresh()}changeX(t){let i=this.x,e=this.y;this.x+=t,this.drawing&&this.drawLine(i,e),this.refresh()}changeY(t){let i=this.x,e=this.y;this.y+=t,this.drawing&&this.drawLine(i,e),this.refresh()}constructor(t){super(t),this.drawing=t?.drawing??!1,this.penSize=t?.penSize??5,this.color=t?.color??"black"}};var W=class o extends c{discriminant="text";tags=new Set(["text"]);content;color;fontFamily;fontSize;align;baseline;font;getBoundingBox(){let t=u.init(),i=h.measureText(String(this.content)),e=i.width/2,s=i.actualBoundingBoxAscent+i.actualBoundingBoxDescent/2,n=t.cos(this.dir),l=t.sin(this.dir),p=2*(Math.abs(e*n)+Math.abs(s*l))*this.size,d=2*(Math.abs(e*l)+Math.abs(s*n))*this.size;return{x:this.x,y:this.y,width:p,height:d}}getPath(){let t=new Path2D;h.save(),h.font=this.font;let i=h.measureText(String(this.content)),e=i.width*this.size,s=(i.actualBoundingBoxAscent+i.actualBoundingBoxDescent)*this.size;return h.restore(),t.rect(-e/2,-s/2,e,s),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir)),i.font=this.font,i.fillStyle=this.color,i.textAlign=this.align,i.textBaseline=this.baseline,i.fillText(String(this.content),0,0),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions,content:this.content,color:this.color,fontFamily:this.fontFamily,fontSize:this.fontSize,align:this.align,baseline:this.baseline}}setContent(t){this.content=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}setFontSize(t){this.fontSize=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}setFontFamily(t){this.fontFamily=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}setAlign(t){this.align=t,this.refresh()}setBaseline(t){this.baseline=t,this.refresh()}constructor(t){super(t),this.content=t?.content??"",this.color=t?.color??"black",this.fontFamily=t?.fontFamily??"Arial",this.fontSize=t?.fontSize??16,this.align=t?.align??"center",this.baseline=t?.baseline??"middle",this.font=`${this.fontSize}px ${this.fontFamily}`,this.draw()}};var A=class o extends c{discriminant="button";tags=new Set(["button"]);content;fontColor;fontFamily;fontSize;font;width;height;backgroundColor;outlineColor;outlineWidth;getBoundingBox(){let t=u.init();h.save(),h.font=this.font;let i=h.measureText(String(this.content)),e=Math.max(i.width,this.width)/2,s=Math.max(i.actualBoundingBoxAscent+i.actualBoundingBoxDescent,this.height)/2;h.restore();let n=t.cos(this.dir),l=t.sin(this.dir),p=2*(Math.abs(e*n)+Math.abs(s*l))*this.size,d=2*(Math.abs(e*l)+Math.abs(s*n))*this.size;return{x:this.x,y:this.y,width:p,height:d}}getPath(){let t=new Path2D;return t.rect(-this.width/2*this.size,-this.height/2*this.size,this.width*this.size,this.height*this.size),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir)),i.fillStyle=this.backgroundColor,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth;let n=this.getCachedPath();i.fill(n),this.outlineWidth&&i.stroke(n),i.font=this.font,i.fillStyle=this.fontColor,i.textAlign="center",i.textBaseline="middle",i.fillText(String(this.content),0,0),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),content:this.content,fontColor:this.fontColor,fontFamily:this.fontFamily,fontSize:this.fontSize,width:this.width,height:this.height,backgroundColor:this.backgroundColor,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setContent(t){this.content=t,this.invalidatePath(),this.refresh()}setBackgroundColor(t){this.backgroundColor=t,this.refresh()}setFontColor(t){this.fontColor=t,this.refresh()}setFontSize(t){this.fontSize=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}setFontFamily(t){this.fontFamily=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}constructor(t){super(t),this.content=t?.content??"",this.fontColor=t?.fontColor??"black",this.fontFamily=t?.fontFamily??"Arial",this.fontSize=t?.fontSize??16,this.font=`${this.fontSize}px ${this.fontFamily}`,this.width=t?.width??String(this.content).length*this.fontSize+10,this.height=t?.height??this.fontSize+10,this.backgroundColor=t?.backgroundColor??"rgb(204, 204, 204)",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var E=class o extends W{tags=new Set(["text","watermark"]);create(t){return new o(t)}constructor(t){super(t),this.content=t?.content??"Made with TScratch",this.x=t?.x??-r.width/2+5,this.y=t?.y??r.height/2-5,this.align=t?.align??"left",this.baseline=t?.baseline??"top",this.draw()}};var V=class o extends c{discriminant="imagesprite";tags=new Set(["imagesprite"]);costumes;costumeNumber;width;height;outlineColor;outlineWidth;img;getBoundingBox(){let t=u.init(),i=this.width/2,e=this.height/2,s=t.cos(this.dir),n=t.sin(this.dir),l=2*Math.sqrt((i*s)**2+(e*n)**2)*this.size,p=2*Math.sqrt((i*n)**2+(e*s)**2)*this.size;return{x:this.x,y:this.y,width:l,height:p}}getPath(){let t=new Path2D;return t.rect(-this.width/2*this.size,-this.height/2*this.size,this.width*this.size,this.height*this.size),t}draw(t){let i=t?a:h;i.save();let e=this.x+r.width/2,s=-this.y+r.height/2;i.translate(e,s),i.rotate(this.toRadians(this.dir)),i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.drawImage(this.img,0,0,this.img.width,this.img.height,-this.width/2,-this.height/2,this.width,this.height),this.outlineWidth&&i.stroke(this.getCachedPath()),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),costumes:this.costumes,costumeNumber:this.costumeNumber,width:this.width,height:this.height,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setCostume(t){this.costumeNumber=t<this.costumes.length&&t>=0?t:0,this.img.src=this.costumes[this.costumeNumber],this.img.onload=this.refresh}nextCostume(){this.costumeNumber=(this.costumeNumber+1)%this.costumes.length,this.img.src=this.costumes[this.costumeNumber],this.img.onload=this.refresh}previousCostume(){this.costumeNumber--,this.costumeNumber<0&&(this.costumeNumber=this.costumes.length-1),this.img.src=this.costumes[this.costumeNumber],this.img.onload=this.refresh}setWidth(t){this.width=t,this.invalidatePath(),this.refresh()}setHeight(t){this.height=t,this.invalidatePath(),this.refresh()}constructor(t){super(t),this.costumes=t?.costumes??[],this.costumeNumber=t?.costumeNumber&&t.costumeNumber<this.costumes.length&&t.costumeNumber>=0?t.costumeNumber:0,this.img=new Image,this.img.src=this.costumes[this.costumeNumber]??"",this.width=t?.width??0,this.height=t?.height??0,this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.img.onload=()=>{t?.width||(this.width=this.img.width),t?.height||(this.height=this.img.height),this.draw()}}};var N=class extends z{tags=new Set(["circle","rigidbody"]);gravity;vX;vY;drag;bounceLoss;update(){let t=u.init();this.vY+=this.gravity,this.vY*=this.drag,this.vX*=this.drag;let i=this.x+this.vX,e=this.y+this.vY,s=t.sceneMap.get(this.scene).sprites.filter(g=>g.discriminant==="circle"),n=t.sceneMap.get("*").sprites.filter(g=>g.discriminant==="circle"),l=[...s,...n],p=Math.ceil(this.distanceTo(i,e)/(2*this.radius));for(let g=0;g<p;g++)for(let C of l)if(this.distanceTo(C.x,C.y)<this.radius+C.radius){let f=this.x-C.x,O=this.y-C.y,P=Math.sqrt(f*f+O*O);if(P===0)continue;let S=f/P,x=O/P,y=this.vX*S+this.vY*x;this.vX=(this.vX-2*y*S)*this.bounceLoss,this.vY=(this.vY-2*y*x)*this.bounceLoss,this.changeX(this.vX),this.changeY(this.vY);return}this.goTo(i,e);let d=r.width/2,m=r.height/2;this.x-this.radius<-d?(this.setX(-d+this.radius),this.vX=Math.abs(this.vX)*this.bounceLoss):this.x+this.radius>d&&(this.setX(d-this.radius),this.vX=-Math.abs(this.vX)*this.bounceLoss),this.y-this.radius<-m?(this.setY(-m+this.radius),this.vY=Math.abs(this.vY)*this.bounceLoss):this.y+this.radius>m&&(this.setY(m-this.radius),this.vY=-Math.abs(this.vY)*this.bounceLoss)}constructor(t){super(t),this.gravity=t?.gravity??-1.8,this.drag=t?.drag??.96,this.bounceLoss=t?.bounceLoss??.9,this.vX=t?.vX??0,this.vY=t?.vY??0}};var _={Engine:u,Sprite:c,Multiplayer:R,Rectangle:T,Square:Y,Oval:X,Circle:z,Arc:L,RegularPolygon:F,CustomPolygon:D,Pen:I,Text:W,Button:A,Watermark:E,ImageSprite:V,RigidCircle:N,scale:B,aspectRatio:k,setScale:q,setAspectRatio:U,canvas:r,ctx:h},Ci=_;export{L as Arc,A as Button,z as Circle,D as CustomPolygon,u as Engine,V as ImageSprite,R as Multiplayer,X as Oval,I as Pen,T as Rectangle,F as RegularPolygon,N as RigidCircle,c as Sprite,Y as Square,W as Text,E as Watermark,k as aspectRatio,r as canvas,h as ctx,Ci as default,B as scale,U as setAspectRatio,q as setScale};
|
|
1
|
+
var n=document.getElementById("game-window")||document.createElement("canvas"),a=n.getContext("2d"),w=document.createElement("canvas"),p=w.getContext("2d"),D=16/9,M;function G(){n.width=D*M,n.height=M,w.width=D*M,w.height=M}function q(o){M=o,G()}function U(o){D=o,G()}n.parentElement?.insertBefore(w,n);q(500);var d=class o{x=0;y=0;dir=0;size=1;pivot=[0,0];scene="main";hidden=!1;layer=0;cachedPath=null;pathDirty=!0;static collisionCanvas=null;static collisionCtx=null;refresh(){l.init().refresh()}invalidatePath(){this.pathDirty=!0,this.cachedPath=null}getCachedPath(){return(this.pathDirty||!this.cachedPath)&&(this.cachedPath=this.getPath(),this.pathDirty=!1),this.cachedPath}constructor(t){Object.assign(this,t),l.init().addSprite(this)}getCreateOptions(){return{x:this.x,y:this.y,dir:this.dir,size:this.size,scene:this.scene,layer:this.layer,hidden:this.hidden}}clone(t){return this.create({...this.getCreateOptions(),...t})}touching(t){if(this.hidden||t.hidden||this.scene!=="*"&&t.scene!=="*"&&this.scene!==t.scene)return!1;let i=this.getBoundingBox(),e=t.getBoundingBox();if(!(Math.abs(i.x-e.x)<(i.width+e.width)/2&&Math.abs(i.y-e.y)<(i.height+e.height)/2))return!1;let s=i.x-i.width/2,h=i.y+i.height/2,c=i.x+i.width/2,u=i.y-i.height/2,f=e.x-e.width/2,m=e.y+e.height/2,g=e.x+e.width/2,b=e.y-e.height/2,y=Math.max(s,f),S=Math.min(u,b),x=Math.min(c,g),v=Math.max(h,m),C=x-y,B=v-S;if(C<1||B<1)return!1;o.collisionCanvas||(o.collisionCanvas=new OffscreenCanvas(1,1),o.collisionCtx=o.collisionCanvas.getContext("2d",{willReadFrequently:!0}));let P=o.collisionCtx;o.collisionCanvas.width<C&&(o.collisionCanvas.width=C),o.collisionCanvas.height<B&&(o.collisionCanvas.height=B),P.clearRect(0,0,C,B);let $=(O,st)=>{P.save();let rt=O.x-y,nt=v-O.y;P.translate(rt,nt),P.rotate(O.toRadians(O.dir)),P.fillStyle=st,P.fill(O.getCachedPath()),P.restore()};$(this,"red");let H=P.getImageData(0,0,C,B).data;P.clearRect(0,0,C,B),$(t,"blue");let et=P.getImageData(0,0,C,B).data;for(let O=3;O<H.length;O+=4)if(H[O]>0&&et[O]>0)return!0;return!1}toRadians(t){return t*Math.PI/180}toDegrees(t){return t*180/Math.PI}distanceTo(t,i){return Math.hypot(t-this.x,i-this.y)}move(t){this.x+=t*Math.sin(this.toRadians(this.dir)),this.y+=t*Math.cos(this.toRadians(this.dir)),this.refresh()}turn(t){this.dir+=t,this.refresh()}point(t){this.dir=t,this.refresh()}pointTowards(t,i){this.dir=90-this.toDegrees(Math.atan2(i-this.y,t-this.x)),this.refresh()}setX(t){this.x=t,this.refresh()}setY(t){this.y=t,this.refresh()}goTo(t,i){this.x=t,this.y=i,this.refresh()}changeX(t){this.x+=t,this.refresh()}changeY(t){this.y+=t,this.refresh()}setPivot(t,i){this.pivot=[t,i],this.refresh()}show(){this.hidden=!1,this.refresh()}hide(){this.hidden=!0,this.refresh()}setSize(t){this.size=t>0?t:0,this.invalidatePath(),this.refresh()}changeSize(t){this.size=this.size+t>0?this.size+t:0,this.invalidatePath(),this.refresh()}goToLayer(t){this.layer=t,this.refresh()}changeLayer(t){this.layer+=t,this.refresh()}};var l=class o{static instance;loopRunning=!1;gameLoop=null;maxFPS=24;deltaTime=1/this.maxFPS;lastFrame=performance.now();refreshScheduled=!1;animationFrameId=null;sounds=[];mouseX=0;mouseY=0;mouseDown=!1;mouseClicked=!1;keysPressed=new Set;currentScene="main";sceneMap=new Map;variableMap=new Map;static init(){return this.instance||(this.instance=new o),this.instance}setScene(t){this.sceneMap.get(t)||this.sceneMap.set(t,{sprites:[],loop:null}),this.loopRunning=!1,this.currentScene=t,this.gameLoop=this.sceneMap.get(t).loop,this.setMaxFPS(this.maxFPS)}setLoop(t,i){if(!this.sceneMap.get(t)){this.sceneMap.set(t,{sprites:[],loop:i}),t===this.currentScene&&this.setScene(t);return}this.sceneMap.get(t).loop=i,t===this.currentScene&&this.setScene(t)}pauseLoop(){this.loopRunning=!1,this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}resumeLoop(){this.loopRunning=!0,this.setMaxFPS(this.maxFPS)}addSprite(t){let{scene:i,layer:e}=t;if(!this.sceneMap.get(i)){this.sceneMap.set(i,{sprites:[t],loop:null});return}let r=this.sceneMap.get(i).sprites.findIndex(s=>s.layer>e);if(r===-1){this.sceneMap.get(i).sprites.push(t);return}this.sceneMap.get(i).sprites.splice(r,0,t),this.refresh()}removeSprite(t){let{scene:i}=t;this.sceneMap.get(i)&&(this.sceneMap.get(i).sprites=this.sceneMap.get(i).sprites.filter(e=>e!==t),this.refresh())}async setMaxFPS(t){this.maxFPS=t;let i=this.gameLoop;if(!i)return;this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.loopRunning=!0;let e=1e3/t,r=0,s=async h=>{if(!this.loopRunning)return;let c=h-this.lastFrame;this.lastFrame=h,r+=c,r>=e&&(this.deltaTime=r/1e3,r=r%e,i&&await i()),this.animationFrameId=requestAnimationFrame(s)};this.lastFrame=performance.now(),this.animationFrameId=requestAnimationFrame(s)}refresh(){this.refreshScheduled||(this.refreshScheduled=!0,requestAnimationFrame(()=>{this.refreshScheduled=!1,a.clearRect(0,0,n.width,n.height),[...this.sceneMap.get(this.currentScene).sprites,...this.sceneMap.get("*").sprites].forEach(i=>{i.hidden||i.draw()})}))}async wait(t){return new Promise(i=>setTimeout(i,t))}async waitUntil(t){return new Promise(i=>{let e=()=>{t()?i():setTimeout(e,1e3/this.maxFPS)};e()})}setVariable(t,i){this.variableMap.set(t,i)}getVariable(t){return this.variableMap.get(t)}hovering(t){let{mouseX:i,mouseY:e}=this,r=i+n.width/2,s=n.height/2-e,h=r-(t.x+n.width/2),c=s-(n.height/2-t.y),u=-this.toRadians(t.dir),f=h*Math.cos(u)-c*Math.sin(u),m=h*Math.sin(u)+c*Math.cos(u);return a.isPointInPath(t.getCachedPath(),f,m)}keyPressed(t){switch(t){case"any":return this.keysPressed.size>0;case"up":return this.keysPressed.has("ArrowUp");case"down":return this.keysPressed.has("ArrowDown");case"left":return this.keysPressed.has("ArrowLeft");case"right":return this.keysPressed.has("ArrowRight");case"space":return this.keysPressed.has(" ");default:return this.keysPressed.has(t)}}playSound(t){let i=new Audio(t);return this.sounds.push(i),i.play(),i}stopSound(t){t.pause(),t.currentTime=0,this.sounds=this.sounds.filter(i=>i!==t)}stopAllSounds(){this.sounds.forEach(t=>{t.pause(),t.currentTime=0}),this.sounds=[]}pickRandom(t,i){return t>i&&([t,i]=[i,t]),Math.floor(Math.random()*(i-t+1)+t)}dotProduct(...t){let[i,e]=t;switch(i.length){case 2:return i[0]*e[0]+i[1]*e[1];case 3:return i[0]*e[0]+i[1]*e[1]+i[2]*e[2];case 4:return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]+i[3]*e[3]}}sin(t){return Math.sin(this.toRadians(t))}cos(t){return Math.cos(this.toRadians(t))}tan(t){return Math.tan(this.toRadians(t))}csc(t){return 1/Math.sin(this.toRadians(t))}sec(t){return 1/Math.cos(this.toRadians(t))}cot(t){return 1/Math.tan(this.toRadians(t))}asin(t){return this.toDegrees(Math.asin(t))}acos(t){return this.toDegrees(Math.acos(t))}acsc(t){return this.toDegrees(Math.asin(1/t))}asec(t){return this.toDegrees(Math.acos(1/t))}toRadians(t){return t*Math.PI/180}toDegrees(t){return t*180/Math.PI}constructor(){this.setMaxFPS(24),this.sceneMap.set("main",{loop:null,sprites:[]}),this.sceneMap.set("*",{loop:null,sprites:[]}),w.addEventListener("mousemove",t=>{this.mouseX=t.clientX-w.offsetLeft-w.width/2,this.mouseY=-(t.clientY-w.offsetTop-w.height/2)}),w.addEventListener("mousedown",()=>{this.mouseDown=!0}),w.addEventListener("mouseup",()=>{this.mouseDown=!1}),w.addEventListener("click",()=>{this.mouseClicked=!0,setTimeout(()=>this.mouseClicked=!1,0)}),addEventListener("keydown",t=>{t.repeat||this.keysPressed.add(t.key)}),addEventListener("keyup",t=>{this.keysPressed.delete(t.key)})}};import{io as ot}from"socket.io-client";var Y=class o{static instance;socket;static connect(t="http://localhost:3000"){return this.instance||(this.instance=new o(t)),this.instance}disconnect(){this.socket.disconnect()}constructor(t){this.socket=ot(t)}broadcast(t,i){this.socket.emit(t,i)}on(t,i){this.socket.on(t,i)}};var R=class o extends d{discriminant="rectangle";tags=new Set(["rectangle"]);width;height;color;outlineColor;outlineWidth;getBoundingBox(){let t=l.init(),i=this.width/2,e=this.height/2,r=t.cos(this.dir),s=t.sin(this.dir),h=2*(Math.abs(i*r)+Math.abs(e*s))*this.size,c=2*(Math.abs(i*s)+Math.abs(e*r))*this.size;return{x:this.x,y:this.y,width:h,height:c}}getPath(){let t=new Path2D;return t.rect(-this.width/2*this.size,-this.height/2*this.size,this.width*this.size,this.height*this.size),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),width:this.width,height:this.height,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setWidth(t){this.width=t,this.invalidatePath(),this.refresh()}setHeight(t){this.height=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.width=t?.width??50,this.height=t?.height??50,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var X=class o extends d{discriminant="square";tags=new Set(["square"]);sideLength;color;outlineColor;outlineWidth;getBoundingBox(){let t=l.init(),i=this.sideLength/2,e=t.cos(this.dir),r=t.sin(this.dir),s=2*(Math.abs(i*e)+Math.abs(i*r))*this.size;return{x:this.x,y:this.y,width:s,height:s}}getPath(){let t=new Path2D;return t.rect(-this.sideLength/2*this.size,-this.sideLength/2*this.size,this.sideLength*this.size,this.sideLength*this.size),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),sideLength:this.sideLength,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setSideLength(t){this.sideLength=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.sideLength=t?.sideLength??50,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var T=class o extends d{discriminant="oval";tags=new Set(["oval"]);radX;radY;color;outlineColor;outlineWidth;getBoundingBox(){let t=l.init(),i=this.radX,e=this.radY,r=t.cos(this.dir),s=t.sin(this.dir),h=2*(Math.abs(i*r)+Math.abs(e*s))*this.size,c=2*(Math.abs(i*s)+Math.abs(e*r))*this.size;return{x:this.x,y:this.y,width:h,height:c}}getPath(){let t=new Path2D;return t.ellipse(0,0,this.radX*this.size,this.radY*this.size,0,0,Math.PI*2),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),radX:this.radX,radY:this.radY,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setRadX(t){this.radX=t,this.invalidatePath(),this.refresh()}setRadY(t){this.radY=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.radX=t?.radX??25,this.radY=t?.radY??25,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var z=class o extends d{discriminant="circle";tags=new Set(["circle"]);radius;color;outlineColor;outlineWidth;getBoundingBox(){return{x:this.x,y:this.y,width:this.radius*2*this.size,height:this.radius*2*this.size}}getPath(){let t=new Path2D;return t.ellipse(0,0,this.radius*this.size,this.radius*this.size,0,0,Math.PI*2),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),radius:this.radius,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setRadius(t){this.radius=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.radius=t?.radius??25,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var V=class o extends d{discriminant="arc";tags=new Set(["arc"]);radius;angle;color;outlineColor;outlineWidth;getBoundingBox(){return{x:this.x,y:this.y,width:this.radius*2*this.size,height:this.radius*2*this.size}}getPath(){let t=new Path2D;return t.arc(0,0,this.radius*this.size,this.toRadians(this.angle/2-90),this.toRadians(-this.angle/2-90)),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),radius:this.radius,angle:this.angle,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setRadius(t){this.radius=t,this.invalidatePath(),this.refresh()}setAngle(t){this.angle=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.radius=t?.radius??25,this.angle=t?.angle??270,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var F=class o extends d{discriminant="regularpolygon";tags=new Set(["regularpolygon"]);sides;radius;color;outlineColor;outlineWidth;getBoundingBox(){return{x:this.x,y:this.y,width:this.radius*2*this.size,height:this.radius*2*this.size}}getPath(){let t=new Path2D,i=2*Math.PI/this.sides;t.moveTo(this.radius*this.size,0);for(let e=1;e<this.sides;e++)t.lineTo(this.radius*Math.cos(i*e)*this.size,this.radius*Math.sin(i*e)*this.size);return t.closePath(),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),sides:this.sides,radius:this.radius,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setSides(t){this.sides=t,this.invalidatePath(),this.refresh()}setRadius(t){this.radius=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.sides=t?.sides??5,this.radius=t?.radius??50,this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var E=class o extends d{discriminant="custompolygon";tags=new Set(["custompolygon"]);vertices;color;outlineColor;outlineWidth;getBoundingBox(){let t=l.init(),i=t.cos(this.dir),e=t.sin(this.dir),r=1/0,s=-1/0,h=1/0,c=-1/0;if(this.vertices.length===0)return{x:this.x,y:this.y,width:0,height:0};for(let b of this.vertices){let y=b[0]*i-b[1]*e,S=b[0]*e+b[1]*i,x=this.x+y,v=this.y+S;x<r&&(r=x),x>s&&(s=x),v<h&&(h=v),v>c&&(c=v)}let u=s-r,f=c-h,m=r+u/2,g=h+f/2;return{x:m*this.size,y:g*this.size,width:u*this.size,height:f*this.size}}getPath(){let t=new Path2D;if(this.vertices.length<2)return t;let i=this.vertices,[e,...r]=i;t.moveTo(e[0]*this.size,-e[1]*this.size);for(let s of r)t.lineTo(s[0]*this.size,-s[1]*this.size);return t.closePath(),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]);let s=this.getCachedPath();i.fillStyle=this.color,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.fill(s),this.outlineWidth&&i.stroke(s),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),vertices:this.vertices,color:this.color,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setVertices(t){this.vertices=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}constructor(t){super(t),this.vertices=t?.vertices??[],this.color=t?.color??"black",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var k=class o extends d{discriminant="pen";tags=new Set(["pen"]);drawing;penSize;color;getBoundingBox(){return{x:this.x,y:this.y,width:this.penSize*this.size*2,height:this.penSize*this.size*2}}getPath(){return new Path2D}draw(){}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),drawing:this.drawing,penSize:this.penSize,color:this.color}}up(){this.drawing=!1}down(){this.drawing=!0}stamp(t){t.draw(!0)}eraseAll(){p.clearRect(0,0,n.width,n.height)}dot(){p.fillStyle=this.color,p.fillRect(this.x-this.penSize/2+n.width/2,-this.y-this.penSize/2+n.height/2,this.penSize,this.penSize)}drawSprite(t){t.draw(!0),l.init().removeSprite(t)}drawLine(t,i){p.beginPath(),p.moveTo(t+n.width/2,-i+n.height/2),p.lineTo(this.x+n.width/2,-this.y+n.height/2),p.lineWidth=this.penSize,p.strokeStyle=this.color,p.stroke()}move(t){let i=this.x,e=this.y;this.x+=t*Math.sin(this.toRadians(this.dir)),this.y+=t*Math.cos(this.toRadians(this.dir)),this.drawing&&this.drawLine(i,e),this.refresh()}setX(t){let i=this.x,e=this.y;this.x=t,this.drawing&&this.drawLine(i,e),this.refresh()}setY(t){let i=this.x,e=this.y;this.y=t,this.drawing&&this.drawLine(i,e),this.refresh()}goTo(t,i){let e=this.x,r=this.y;this.x=t,this.y=i,this.drawing&&this.drawLine(e,r),this.refresh()}changeX(t){let i=this.x,e=this.y;this.x+=t,this.drawing&&this.drawLine(i,e),this.refresh()}changeY(t){let i=this.x,e=this.y;this.y+=t,this.drawing&&this.drawLine(i,e),this.refresh()}constructor(t){super(t),this.drawing=t?.drawing??!1,this.penSize=t?.penSize??5,this.color=t?.color??"black"}};var W=class o extends d{discriminant="text";tags=new Set(["text"]);content;color;fontFamily;fontSize;align;baseline;font;getBoundingBox(){let t=l.init(),i=a.measureText(String(this.content)),e=i.width/2,r=i.actualBoundingBoxAscent+i.actualBoundingBoxDescent/2,s=t.cos(this.dir),h=t.sin(this.dir),c=2*(Math.abs(e*s)+Math.abs(r*h))*this.size,u=2*(Math.abs(e*h)+Math.abs(r*s))*this.size;return{x:this.x,y:this.y,width:c,height:u}}getPath(){let t=new Path2D;a.save(),a.font=this.font;let i=a.measureText(String(this.content)),e=i.width*this.size,r=(i.actualBoundingBoxAscent+i.actualBoundingBoxDescent)*this.size;return a.restore(),t.rect(-e/2,-r/2,e,r),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]),i.font=this.font,i.fillStyle=this.color,i.textAlign=this.align,i.textBaseline=this.baseline,i.fillText(String(this.content),0,0),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions,content:this.content,color:this.color,fontFamily:this.fontFamily,fontSize:this.fontSize,align:this.align,baseline:this.baseline}}setContent(t){this.content=t,this.invalidatePath(),this.refresh()}setColor(t){this.color=t,this.refresh()}setFontSize(t){this.fontSize=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}setFontFamily(t){this.fontFamily=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}setAlign(t){this.align=t,this.refresh()}setBaseline(t){this.baseline=t,this.refresh()}constructor(t){super(t),this.content=t?.content??"",this.color=t?.color??"black",this.fontFamily=t?.fontFamily??"Arial",this.fontSize=t?.fontSize??16,this.align=t?.align??"center",this.baseline=t?.baseline??"middle",this.font=`${this.fontSize}px ${this.fontFamily}`,this.draw()}};var I=class o extends d{discriminant="button";tags=new Set(["button"]);content;fontColor;fontFamily;fontSize;font;width;height;backgroundColor;outlineColor;outlineWidth;getBoundingBox(){let t=l.init();a.save(),a.font=this.font;let i=a.measureText(String(this.content)),e=Math.max(i.width,this.width)/2,r=Math.max(i.actualBoundingBoxAscent+i.actualBoundingBoxDescent,this.height)/2;a.restore();let s=t.cos(this.dir),h=t.sin(this.dir),c=2*(Math.abs(e*s)+Math.abs(r*h))*this.size,u=2*(Math.abs(e*h)+Math.abs(r*s))*this.size;return{x:this.x,y:this.y,width:c,height:u}}getPath(){let t=new Path2D;return t.rect(-this.width/2*this.size,-this.height/2*this.size,this.width*this.size,this.height*this.size),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]),i.fillStyle=this.backgroundColor,i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth;let s=this.getCachedPath();i.fill(s),this.outlineWidth&&i.stroke(s),i.font=this.font,i.fillStyle=this.fontColor,i.textAlign="center",i.textBaseline="middle",i.fillText(String(this.content),0,0),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),content:this.content,fontColor:this.fontColor,fontFamily:this.fontFamily,fontSize:this.fontSize,width:this.width,height:this.height,backgroundColor:this.backgroundColor,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setContent(t){this.content=t,this.invalidatePath(),this.refresh()}setBackgroundColor(t){this.backgroundColor=t,this.refresh()}setFontColor(t){this.fontColor=t,this.refresh()}setFontSize(t){this.fontSize=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}setFontFamily(t){this.fontFamily=t,this.font=`${this.fontSize}px ${this.fontFamily}`,this.invalidatePath(),this.refresh()}constructor(t){super(t),this.content=t?.content??"",this.fontColor=t?.fontColor??"black",this.fontFamily=t?.fontFamily??"Arial",this.fontSize=t?.fontSize??16,this.font=`${this.fontSize}px ${this.fontFamily}`,this.width=t?.width??String(this.content).length*this.fontSize+10,this.height=t?.height??this.fontSize+10,this.backgroundColor=t?.backgroundColor??"rgb(204, 204, 204)",this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.draw()}};var L=class o extends W{tags=new Set(["text","watermark"]);create(t){return new o(t)}constructor(t){super(t),this.content=t?.content??"Made with TScratch",this.x=t?.x??-n.width/2+5,this.y=t?.y??n.height/2-5,this.align=t?.align??"left",this.baseline=t?.baseline??"top",this.draw()}};var A=class o extends d{discriminant="imagesprite";tags=new Set(["imagesprite"]);costumes;costumeNumber;width;height;outlineColor;outlineWidth;imgBitmap=null;img;getBoundingBox(){let t=l.init(),i=this.width/2,e=this.height/2,r=t.cos(this.dir),s=t.sin(this.dir),h=2*Math.sqrt((i*r)**2+(e*s)**2)*this.size,c=2*Math.sqrt((i*s)**2+(e*r)**2)*this.size;return{x:this.x,y:this.y,width:h,height:c}}getPath(){let t=new Path2D;return t.rect(-this.width/2*this.size,-this.height/2*this.size,this.width*this.size,this.height*this.size),t}draw(t){let i=t?p:a;i.save();let e=this.x+n.width/2,r=-this.y+n.height/2;i.translate(e,r),i.rotate(this.toRadians(this.dir)),i.translate(-this.pivot[0],this.pivot[1]),i.strokeStyle=this.outlineColor,i.lineWidth=this.outlineWidth,i.drawImage(this.imgBitmap??this.img,0,0,this.img.width,this.img.height,-this.width/2,-this.height/2,this.width,this.height),this.outlineWidth&&i.stroke(this.getCachedPath()),i.restore()}create(t){return new o(t)}getCreateOptions(){return{...super.getCreateOptions(),costumes:this.costumes,costumeNumber:this.costumeNumber,width:this.width,height:this.height,outlineColor:this.outlineColor,outlineWidth:this.outlineWidth}}setCostume(t){this.costumeNumber=t<this.costumes.length&&t>=0?t:0,this.img.src=this.costumes[this.costumeNumber],this.img.onload=()=>{createImageBitmap(this.img).then(i=>{this.imgBitmap=i}),this.refresh()}}nextCostume(){this.costumeNumber=(this.costumeNumber+1)%this.costumes.length,this.img.src=this.costumes[this.costumeNumber],this.img.onload=()=>{this.imgBitmap=null,createImageBitmap(this.img).then(t=>{this.imgBitmap=t}),this.refresh()}}previousCostume(){this.costumeNumber--,this.costumeNumber<0&&(this.costumeNumber=this.costumes.length-1),this.img.src=this.costumes[this.costumeNumber],this.img.onload=()=>{this.imgBitmap=null,createImageBitmap(this.img).then(t=>{this.imgBitmap=t}),this.refresh()}}setWidth(t){this.width=t,this.invalidatePath(),this.refresh()}setHeight(t){this.height=t,this.invalidatePath(),this.refresh()}constructor(t){super(t),this.costumes=t?.costumes??[],this.costumeNumber=t?.costumeNumber&&t.costumeNumber<this.costumes.length&&t.costumeNumber>=0?t.costumeNumber:0,this.img=new Image,this.img.src=this.costumes[this.costumeNumber]??"",this.width=t?.width??0,this.height=t?.height??0,this.outlineColor=t?.outlineColor??"black",this.outlineWidth=t?.outlineWidth??0,this.img.onload=()=>{t?.width||(this.width=this.img.width),t?.height||(this.height=this.img.height),createImageBitmap(this.img).then(i=>{this.imgBitmap=i}),this.draw()}}};var N=class extends z{tags=new Set(["circle","rigidbody"]);gravity;vX;vY;drag;bounceLoss;update(){let t=l.init();this.vY+=this.gravity,this.vY*=this.drag,this.vX*=this.drag;let i=this.x+this.vX,e=this.y+this.vY,r=t.sceneMap.get(this.scene).sprites.filter(m=>m.discriminant==="circle"),s=t.sceneMap.get("*").sprites.filter(m=>m.discriminant==="circle"),h=[...r,...s],c=Math.ceil(this.distanceTo(i,e)/(2*this.radius));for(let m=0;m<c;m++)for(let g of h)if(this.distanceTo(g.x,g.y)<this.radius+g.radius){let b=this.x-g.x,y=this.y-g.y,S=Math.sqrt(b*b+y*y);if(S===0)continue;let x=b/S,v=y/S,C=this.vX*x+this.vY*v;this.vX=(this.vX-2*C*x)*this.bounceLoss,this.vY=(this.vY-2*C*v)*this.bounceLoss,this.changeX(this.vX),this.changeY(this.vY);return}this.goTo(i,e);let u=n.width/2,f=n.height/2;this.x-this.radius<-u?(this.setX(-u+this.radius),this.vX=Math.abs(this.vX)*this.bounceLoss):this.x+this.radius>u&&(this.setX(u-this.radius),this.vX=-Math.abs(this.vX)*this.bounceLoss),this.y-this.radius<-f?(this.setY(-f+this.radius),this.vY=Math.abs(this.vY)*this.bounceLoss):this.y+this.radius>f&&(this.setY(f-this.radius),this.vY=-Math.abs(this.vY)*this.bounceLoss)}constructor(t){super(t),this.gravity=t?.gravity??-1.8,this.drag=t?.drag??.96,this.bounceLoss=t?.bounceLoss??.9,this.vX=t?.vX??0,this.vY=t?.vY??0}};var Z=class extends k{FOV=60;ASPECT=n.width/n.height;Z_NEAR=.01;SPEED=2;SENSITIVITY=300;camX=0;camY=0;camZ=0;camDirX=0;camDirY=0;camDirZ=0;objects;constructor(t){super(t),this.objects=t.objects}registerControls(){let t=l.init(),i=t.deltaTime,e=t.sin(this.camDirY),r=t.cos(this.camDirY);t.keyPressed("w")&&(this.camX+=this.SPEED*e*i,this.camZ+=this.SPEED*r*i),t.keyPressed("a")&&(this.camX-=this.SPEED*r*i,this.camZ+=this.SPEED*e*i),t.keyPressed("s")&&(this.camX-=this.SPEED*e*i,this.camZ-=this.SPEED*r*i),t.keyPressed("d")&&(this.camX+=this.SPEED*r*i,this.camZ-=this.SPEED*e*i),t.keyPressed("e")&&(this.camY+=this.SPEED*i),t.keyPressed("q")&&(this.camY-=this.SPEED*i),t.keyPressed("up")&&(this.camDirX+=this.SENSITIVITY*i),t.keyPressed("down")&&(this.camDirX-=this.SENSITIVITY*i),t.keyPressed("left")&&(this.camDirY-=this.SENSITIVITY*i),t.keyPressed("right")&&(this.camDirY+=this.SENSITIVITY*i)}project(t){let i=1/l.init().tan(this.FOV/2);return t.map(e=>{let r=e[0],s=e[1],h=e[2]<this.Z_NEAR?this.Z_NEAR:e[2],c=n.width/2*(r*i)/(h*this.ASPECT),u=n.height/2*(s*i)/h;return[c,u]})}update(){let t=l.init(),i=t.sin(this.camDirX),e=t.cos(this.camDirX),r=t.sin(this.camDirY),s=t.cos(this.camDirY),h=t.sin(this.camDirZ),c=t.cos(this.camDirZ);for(let u of this.objects){let f=this.project(u.vertices.map(m=>{let g=m[0]+u.x-this.camX,b=m[1]+u.y-this.camY,y=m[2]+u.z-this.camZ,S=g*s-y*r,x=g*r+y*s,v=b*e-x*i,C=b*i+x*e,B=S*c-v*h,P=S*h+v*c;return[B,P,C]}));for(let m of u.faces){let[g,b]=f[m[0]];this.goTo(g,b),this.down();for(let y of m){let[S,x]=f[y];this.goTo(S,x)}this.goTo(g,b),this.up()}}}};var j=class{x=0;y=0;z=0;rotX=0;rotY=0;rotZ=0;vertices;faces;constructor(t){this.vertices=t.vertices,this.faces=t.faces,this.x=t.x??0,this.y=t.y??0,this.z=t.z??2}rotateX(t){let i=l.init(),e=i.cos(t),r=i.sin(t);for(let s=0;s<this.vertices.length;s++){let[h,c,u]=this.vertices[s];this.vertices[s][1]=c*e-u*r,this.vertices[s][2]=c*r+u*e}}rotateY(t){let i=l.init(),e=i.cos(t),r=i.sin(t);for(let s=0;s<this.vertices.length;s++){let[h,c,u]=this.vertices[s];this.vertices[s][0]=h*e+u*r,this.vertices[s][2]=-h*r+u*e}}rotateZ(t){let i=l.init(),e=i.cos(t),r=i.sin(t);for(let s=0;s<this.vertices.length;s++){let[h,c,u]=this.vertices[s];this.vertices[s][0]=h*e-c*r,this.vertices[s][1]=h*r+c*e}}pointX(t){let i=t-this.rotX;this.rotX=t,this.rotateX(i)}pointY(t){let i=t-this.rotY;this.rotY=t,this.rotateY(i)}pointZ(t){let i=t-this.rotZ;this.rotZ=t,this.rotateZ(i)}};var ht=[[-.5,-.5,-.5],[.5,-.5,-.5],[.5,-.5,.5],[-.5,-.5,.5],[-.5,.5,-.5],[.5,.5,-.5],[.5,.5,.5],[-.5,.5,.5]],J=ht;var ct=[[0,1,2,3],[4,5,6,7],[0,4],[1,5],[2,6],[3,7]],K=ct;var at=[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],Q=at;var lt=[[0,1,2],[0,3,1],[0,2,3],[1,3,2]],_=lt;var ut=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],tt=ut;var pt=[[0,2,4],[2,1,4],[1,3,4],[3,0,4],[2,0,5],[1,2,5],[3,1,5],[0,3,5]],it=pt;var dt={Engine:l,Sprite:d,Multiplayer:Y,Rectangle:R,Square:X,Oval:T,Circle:z,Arc:V,RegularPolygon:F,CustomPolygon:E,Pen:k,Text:W,Button:I,Watermark:L,ImageSprite:A,RigidCircle:N,WireframeRenderer3D:Z,Object3D:j,cubeVertices:J,cubeFaces:K,tetrahedronVertices:Q,tetrahedronFaces:_,octahedronVertices:tt,octahedronFaces:it,scale:M,aspectRatio:D,setScale:q,setAspectRatio:U,canvas:n,ctx:a},se=dt;export{V as Arc,I as Button,z as Circle,E as CustomPolygon,l as Engine,A as ImageSprite,Y as Multiplayer,j as Object3D,T as Oval,k as Pen,R as Rectangle,F as RegularPolygon,N as RigidCircle,d as Sprite,X as Square,W as Text,L as Watermark,Z as WireframeRenderer3D,D as aspectRatio,n as canvas,a as ctx,K as cubeFaces,J as cubeVertices,se as default,it as octahedronFaces,tt as octahedronVertices,M as scale,U as setAspectRatio,q as setScale,_ as tetrahedronFaces,Q as tetrahedronVertices};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|