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.
@@ -1,3 +1,7 @@
1
+ type Vec2<T = number> = [T, T];
2
+ type Vec3<T = number> = [T, T, T];
3
+ type Vec4<T = number> = [T, T, T, T];
4
+
1
5
  interface BoundingBox {
2
6
  x: number;
3
7
  y: number;
@@ -9,6 +13,7 @@ interface SpriteOptions {
9
13
  y?: number;
10
14
  dir?: number;
11
15
  size?: number;
16
+ pivot?: Vec2;
12
17
  scene?: string;
13
18
  hidden?: boolean;
14
19
  layer?: number;
@@ -18,6 +23,7 @@ declare abstract class Sprite {
18
23
  y: number;
19
24
  dir: number;
20
25
  size: number;
26
+ pivot: Vec2;
21
27
  scene: string;
22
28
  hidden: boolean;
23
29
  layer: number;
@@ -29,7 +35,7 @@ declare abstract class Sprite {
29
35
  private static collisionCtx;
30
36
  abstract getBoundingBox(): BoundingBox;
31
37
  abstract getPath(): Path2D;
32
- abstract draw(stamping?: boolean): void;
38
+ abstract draw(stamping?: true): void;
33
39
  protected abstract create(options?: SpriteOptions): this;
34
40
  protected refresh(): void;
35
41
  protected invalidatePath(): void;
@@ -50,6 +56,7 @@ declare abstract class Sprite {
50
56
  goTo(x: number, y: number): void;
51
57
  changeX(dX: number): void;
52
58
  changeY(dY: number): void;
59
+ setPivot(x: number, y: number): void;
53
60
  show(): void;
54
61
  hide(): void;
55
62
  setSize(size: number): void;
@@ -58,10 +65,6 @@ declare abstract class Sprite {
58
65
  changeLayer(dL: number): void;
59
66
  }
60
67
 
61
- type Vec2<T = number> = [T, T];
62
- type Vec3<T = number> = [T, T, T];
63
- type Vec4<T = number> = [T, T, T, T];
64
-
65
68
  type GameLoop = (() => void) | (() => Promise<void>);
66
69
  type SceneMap = Map<string, {
67
70
  sprites: Sprite[];
@@ -86,13 +89,13 @@ declare class Engine {
86
89
  sceneMap: SceneMap;
87
90
  private variableMap;
88
91
  static init(): Engine;
89
- changeScene(scene: string): void;
92
+ setScene(scene: string): void;
90
93
  setLoop(scene: string, loop: GameLoop): void;
91
94
  pauseLoop(): void;
92
95
  resumeLoop(): void;
93
96
  addSprite(sprite: Sprite): void;
94
97
  removeSprite(sprite: Sprite): void;
95
- setMaxFramesPerSecond(maxFPS: number): Promise<void>;
98
+ setMaxFPS(maxFPS: number): Promise<void>;
96
99
  refresh(): void;
97
100
  wait(ms: number): Promise<void>;
98
101
  waitUntil(conditionGetter: () => boolean): Promise<void>;
@@ -154,7 +157,7 @@ declare class Rectangle extends Sprite {
154
157
  outlineWidth: number;
155
158
  getBoundingBox(): BoundingBox;
156
159
  getPath(): Path2D;
157
- draw(stamping?: boolean): void;
160
+ draw(stamping?: true): void;
158
161
  create(options?: RectangleOptions): this;
159
162
  protected getCreateOptions(): {
160
163
  width: number;
@@ -166,6 +169,7 @@ declare class Rectangle extends Sprite {
166
169
  y?: number;
167
170
  dir?: number;
168
171
  size?: number;
172
+ pivot?: Vec2;
169
173
  scene?: string;
170
174
  hidden?: boolean;
171
175
  layer?: number;
@@ -191,7 +195,7 @@ declare class Square extends Sprite {
191
195
  outlineWidth: number;
192
196
  getBoundingBox(): BoundingBox;
193
197
  getPath(): Path2D;
194
- draw(stamping?: boolean): void;
198
+ draw(stamping?: true): void;
195
199
  create(options?: SquareOptions): this;
196
200
  protected getCreateOptions(): {
197
201
  sideLength: number;
@@ -202,6 +206,7 @@ declare class Square extends Sprite {
202
206
  y?: number;
203
207
  dir?: number;
204
208
  size?: number;
209
+ pivot?: Vec2;
205
210
  scene?: string;
206
211
  hidden?: boolean;
207
212
  layer?: number;
@@ -228,7 +233,7 @@ declare class Oval extends Sprite {
228
233
  outlineWidth: number;
229
234
  getBoundingBox(): BoundingBox;
230
235
  getPath(): Path2D;
231
- draw(stamping?: boolean): void;
236
+ draw(stamping?: true): void;
232
237
  create(options?: OvalOptions): this;
233
238
  protected getCreateOptions(): {
234
239
  radX: number;
@@ -240,6 +245,7 @@ declare class Oval extends Sprite {
240
245
  y?: number;
241
246
  dir?: number;
242
247
  size?: number;
248
+ pivot?: Vec2;
243
249
  scene?: string;
244
250
  hidden?: boolean;
245
251
  layer?: number;
@@ -265,7 +271,7 @@ declare class Circle extends Sprite {
265
271
  outlineWidth: number;
266
272
  getBoundingBox(): BoundingBox;
267
273
  getPath(): Path2D;
268
- draw(stamping?: boolean): void;
274
+ draw(stamping?: true): void;
269
275
  create(options?: CircleOptions): this;
270
276
  protected getCreateOptions(): {
271
277
  radius: number;
@@ -276,6 +282,7 @@ declare class Circle extends Sprite {
276
282
  y?: number;
277
283
  dir?: number;
278
284
  size?: number;
285
+ pivot?: Vec2;
279
286
  scene?: string;
280
287
  hidden?: boolean;
281
288
  layer?: number;
@@ -302,7 +309,7 @@ declare class Arc extends Sprite {
302
309
  outlineWidth: number;
303
310
  getBoundingBox(): BoundingBox;
304
311
  getPath(): Path2D;
305
- draw(stamping?: boolean): void;
312
+ draw(stamping?: true): void;
306
313
  create(options?: ArcOptions): this;
307
314
  protected getCreateOptions(): {
308
315
  radius: number;
@@ -314,6 +321,7 @@ declare class Arc extends Sprite {
314
321
  y?: number;
315
322
  dir?: number;
316
323
  size?: number;
324
+ pivot?: Vec2;
317
325
  scene?: string;
318
326
  hidden?: boolean;
319
327
  layer?: number;
@@ -341,7 +349,7 @@ declare class RegularPolygon extends Sprite {
341
349
  outlineWidth: number;
342
350
  getBoundingBox(): BoundingBox;
343
351
  getPath(): Path2D;
344
- draw(stamping?: boolean): void;
352
+ draw(stamping?: true): void;
345
353
  create(options?: RegularPolygonOptions): this;
346
354
  protected getCreateOptions(): {
347
355
  sides: number;
@@ -353,6 +361,7 @@ declare class RegularPolygon extends Sprite {
353
361
  y?: number;
354
362
  dir?: number;
355
363
  size?: number;
364
+ pivot?: Vec2;
356
365
  scene?: string;
357
366
  hidden?: boolean;
358
367
  layer?: number;
@@ -378,7 +387,7 @@ declare class CustomPolygon extends Sprite {
378
387
  outlineWidth: number;
379
388
  getBoundingBox(): BoundingBox;
380
389
  getPath(): Path2D;
381
- draw(stamping?: boolean): void;
390
+ draw(stamping?: true): void;
382
391
  create(options?: CustomPolygonOptions): this;
383
392
  protected getCreateOptions(): {
384
393
  vertices: Vec2[];
@@ -389,6 +398,7 @@ declare class CustomPolygon extends Sprite {
389
398
  y?: number;
390
399
  dir?: number;
391
400
  size?: number;
401
+ pivot?: Vec2;
392
402
  scene?: string;
393
403
  hidden?: boolean;
394
404
  layer?: number;
@@ -421,6 +431,7 @@ declare class Pen extends Sprite {
421
431
  y?: number;
422
432
  dir?: number;
423
433
  size?: number;
434
+ pivot?: Vec2;
424
435
  scene?: string;
425
436
  hidden?: boolean;
426
437
  layer?: number;
@@ -430,6 +441,7 @@ declare class Pen extends Sprite {
430
441
  stamp(sprite: Sprite): void;
431
442
  eraseAll(): void;
432
443
  dot(): void;
444
+ drawSprite(sprite: Sprite): void;
433
445
  private drawLine;
434
446
  move(steps: number): void;
435
447
  setX(x: number): void;
@@ -460,7 +472,7 @@ declare class Text extends Sprite {
460
472
  private font;
461
473
  getBoundingBox(): BoundingBox;
462
474
  getPath(): Path2D;
463
- draw(stamping?: boolean): void;
475
+ draw(stamping?: true): void;
464
476
  create(options?: TextOptions): this;
465
477
  protected getCreateOptions(): {
466
478
  content: string | number;
@@ -505,7 +517,7 @@ declare class Button extends Sprite {
505
517
  outlineWidth: number;
506
518
  getBoundingBox(): BoundingBox;
507
519
  getPath(): Path2D;
508
- draw(stamping?: boolean): void;
520
+ draw(stamping?: true): void;
509
521
  create(options?: ButtonOptions): this;
510
522
  protected getCreateOptions(): {
511
523
  content: string | number;
@@ -521,6 +533,7 @@ declare class Button extends Sprite {
521
533
  y?: number;
522
534
  dir?: number;
523
535
  size?: number;
536
+ pivot?: Vec2;
524
537
  scene?: string;
525
538
  hidden?: boolean;
526
539
  layer?: number;
@@ -556,10 +569,11 @@ declare class ImageSprite extends Sprite {
556
569
  height: number;
557
570
  outlineColor: string;
558
571
  outlineWidth: number;
572
+ private imgBitmap;
559
573
  protected img: HTMLImageElement;
560
574
  getBoundingBox(): BoundingBox;
561
575
  getPath(): Path2D;
562
- draw(stamping?: boolean): void;
576
+ draw(stamping?: true): void;
563
577
  create(options?: ImageSpriteOptions): this;
564
578
  protected getCreateOptions(): {
565
579
  costumes: string[];
@@ -572,6 +586,7 @@ declare class ImageSprite extends Sprite {
572
586
  y?: number;
573
587
  dir?: number;
574
588
  size?: number;
589
+ pivot?: Vec2;
575
590
  scene?: string;
576
591
  hidden?: boolean;
577
592
  layer?: number;
@@ -606,6 +621,65 @@ declare class RigidCircle extends Circle implements RigidBodyOptions {
606
621
  constructor(options?: RigidCircleOptions);
607
622
  }
608
623
 
624
+ interface Object3DOptions {
625
+ vertices: Vec3[];
626
+ faces: [number, number, ...number[]][];
627
+ x?: number;
628
+ y?: number;
629
+ z?: number;
630
+ }
631
+ declare class Object3D {
632
+ x: number;
633
+ y: number;
634
+ z: number;
635
+ rotX: number;
636
+ rotY: number;
637
+ rotZ: number;
638
+ vertices: Vec3[];
639
+ faces: [number, number, ...number[]][];
640
+ constructor(options: Object3DOptions);
641
+ rotateX(deg: number): void;
642
+ rotateY(deg: number): void;
643
+ rotateZ(deg: number): void;
644
+ pointX(deg: number): void;
645
+ pointY(deg: number): void;
646
+ pointZ(deg: number): void;
647
+ }
648
+
649
+ interface WireframeRenderer3DOptions extends PenOptions {
650
+ objects: Object3D[];
651
+ }
652
+ declare class WireframeRenderer3D extends Pen {
653
+ FOV: number;
654
+ ASPECT: number;
655
+ Z_NEAR: number;
656
+ SPEED: number;
657
+ SENSITIVITY: number;
658
+ camX: number;
659
+ camY: number;
660
+ camZ: number;
661
+ camDirX: number;
662
+ camDirY: number;
663
+ camDirZ: number;
664
+ objects: Object3D[];
665
+ constructor(options: WireframeRenderer3DOptions);
666
+ registerControls(): void;
667
+ private project;
668
+ update(): void;
669
+ }
670
+
671
+ declare const cubeVertices: Vec3[];
672
+
673
+ declare const cubeFaces: [number, number, ...number[]][];
674
+
675
+ declare const tetrahedronVertices: Vec3[];
676
+
677
+ declare const tetrahedronFaces: [number, number, ...number[]][];
678
+
679
+ declare const octahedronVerticesVertices: Vec3[];
680
+
681
+ declare const octahedronFaces: [number, number, ...number[]][];
682
+
609
683
  type Mat2<T = number> = [
610
684
  [
611
685
  T,
@@ -677,6 +751,14 @@ declare const TScratch: {
677
751
  Watermark: typeof Watermark;
678
752
  ImageSprite: typeof ImageSprite;
679
753
  RigidCircle: typeof RigidCircle;
754
+ WireframeRenderer3D: typeof WireframeRenderer3D;
755
+ Object3D: typeof Object3D;
756
+ cubeVertices: Vec3[];
757
+ cubeFaces: [number, number, ...number[]][];
758
+ tetrahedronVertices: Vec3[];
759
+ tetrahedronFaces: [number, number, ...number[]][];
760
+ octahedronVertices: Vec3[];
761
+ octahedronFaces: [number, number, ...number[]][];
680
762
  scale: number;
681
763
  aspectRatio: number;
682
764
  setScale: typeof setScale;
@@ -685,4 +767,4 @@ declare const TScratch: {
685
767
  ctx: CanvasRenderingContext2D;
686
768
  };
687
769
 
688
- export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, CustomPolygon, type CustomPolygonOptions, Engine, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Multiplayer, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, Sprite, type SpriteOptions, Square, type SquareOptions, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, aspectRatio, canvas, ctx, TScratch as default, scale, setAspectRatio, setScale };
770
+ export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, CustomPolygon, type CustomPolygonOptions, Engine, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Multiplayer, Object3D, type Object3DOptions, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, Sprite, type SpriteOptions, Square, type SquareOptions, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D, type WireframeRenderer3DOptions, aspectRatio, canvas, ctx, cubeFaces, cubeVertices, TScratch as default, octahedronFaces, octahedronVerticesVertices as octahedronVertices, scale, setAspectRatio, setScale, tetrahedronFaces, tetrahedronVertices };
@@ -1,3 +1,7 @@
1
+ type Vec2<T = number> = [T, T];
2
+ type Vec3<T = number> = [T, T, T];
3
+ type Vec4<T = number> = [T, T, T, T];
4
+
1
5
  interface BoundingBox {
2
6
  x: number;
3
7
  y: number;
@@ -9,6 +13,7 @@ interface SpriteOptions {
9
13
  y?: number;
10
14
  dir?: number;
11
15
  size?: number;
16
+ pivot?: Vec2;
12
17
  scene?: string;
13
18
  hidden?: boolean;
14
19
  layer?: number;
@@ -18,6 +23,7 @@ declare abstract class Sprite {
18
23
  y: number;
19
24
  dir: number;
20
25
  size: number;
26
+ pivot: Vec2;
21
27
  scene: string;
22
28
  hidden: boolean;
23
29
  layer: number;
@@ -29,7 +35,7 @@ declare abstract class Sprite {
29
35
  private static collisionCtx;
30
36
  abstract getBoundingBox(): BoundingBox;
31
37
  abstract getPath(): Path2D;
32
- abstract draw(stamping?: boolean): void;
38
+ abstract draw(stamping?: true): void;
33
39
  protected abstract create(options?: SpriteOptions): this;
34
40
  protected refresh(): void;
35
41
  protected invalidatePath(): void;
@@ -50,6 +56,7 @@ declare abstract class Sprite {
50
56
  goTo(x: number, y: number): void;
51
57
  changeX(dX: number): void;
52
58
  changeY(dY: number): void;
59
+ setPivot(x: number, y: number): void;
53
60
  show(): void;
54
61
  hide(): void;
55
62
  setSize(size: number): void;
@@ -58,10 +65,6 @@ declare abstract class Sprite {
58
65
  changeLayer(dL: number): void;
59
66
  }
60
67
 
61
- type Vec2<T = number> = [T, T];
62
- type Vec3<T = number> = [T, T, T];
63
- type Vec4<T = number> = [T, T, T, T];
64
-
65
68
  type GameLoop = (() => void) | (() => Promise<void>);
66
69
  type SceneMap = Map<string, {
67
70
  sprites: Sprite[];
@@ -86,13 +89,13 @@ declare class Engine {
86
89
  sceneMap: SceneMap;
87
90
  private variableMap;
88
91
  static init(): Engine;
89
- changeScene(scene: string): void;
92
+ setScene(scene: string): void;
90
93
  setLoop(scene: string, loop: GameLoop): void;
91
94
  pauseLoop(): void;
92
95
  resumeLoop(): void;
93
96
  addSprite(sprite: Sprite): void;
94
97
  removeSprite(sprite: Sprite): void;
95
- setMaxFramesPerSecond(maxFPS: number): Promise<void>;
98
+ setMaxFPS(maxFPS: number): Promise<void>;
96
99
  refresh(): void;
97
100
  wait(ms: number): Promise<void>;
98
101
  waitUntil(conditionGetter: () => boolean): Promise<void>;
@@ -154,7 +157,7 @@ declare class Rectangle extends Sprite {
154
157
  outlineWidth: number;
155
158
  getBoundingBox(): BoundingBox;
156
159
  getPath(): Path2D;
157
- draw(stamping?: boolean): void;
160
+ draw(stamping?: true): void;
158
161
  create(options?: RectangleOptions): this;
159
162
  protected getCreateOptions(): {
160
163
  width: number;
@@ -166,6 +169,7 @@ declare class Rectangle extends Sprite {
166
169
  y?: number;
167
170
  dir?: number;
168
171
  size?: number;
172
+ pivot?: Vec2;
169
173
  scene?: string;
170
174
  hidden?: boolean;
171
175
  layer?: number;
@@ -191,7 +195,7 @@ declare class Square extends Sprite {
191
195
  outlineWidth: number;
192
196
  getBoundingBox(): BoundingBox;
193
197
  getPath(): Path2D;
194
- draw(stamping?: boolean): void;
198
+ draw(stamping?: true): void;
195
199
  create(options?: SquareOptions): this;
196
200
  protected getCreateOptions(): {
197
201
  sideLength: number;
@@ -202,6 +206,7 @@ declare class Square extends Sprite {
202
206
  y?: number;
203
207
  dir?: number;
204
208
  size?: number;
209
+ pivot?: Vec2;
205
210
  scene?: string;
206
211
  hidden?: boolean;
207
212
  layer?: number;
@@ -228,7 +233,7 @@ declare class Oval extends Sprite {
228
233
  outlineWidth: number;
229
234
  getBoundingBox(): BoundingBox;
230
235
  getPath(): Path2D;
231
- draw(stamping?: boolean): void;
236
+ draw(stamping?: true): void;
232
237
  create(options?: OvalOptions): this;
233
238
  protected getCreateOptions(): {
234
239
  radX: number;
@@ -240,6 +245,7 @@ declare class Oval extends Sprite {
240
245
  y?: number;
241
246
  dir?: number;
242
247
  size?: number;
248
+ pivot?: Vec2;
243
249
  scene?: string;
244
250
  hidden?: boolean;
245
251
  layer?: number;
@@ -265,7 +271,7 @@ declare class Circle extends Sprite {
265
271
  outlineWidth: number;
266
272
  getBoundingBox(): BoundingBox;
267
273
  getPath(): Path2D;
268
- draw(stamping?: boolean): void;
274
+ draw(stamping?: true): void;
269
275
  create(options?: CircleOptions): this;
270
276
  protected getCreateOptions(): {
271
277
  radius: number;
@@ -276,6 +282,7 @@ declare class Circle extends Sprite {
276
282
  y?: number;
277
283
  dir?: number;
278
284
  size?: number;
285
+ pivot?: Vec2;
279
286
  scene?: string;
280
287
  hidden?: boolean;
281
288
  layer?: number;
@@ -302,7 +309,7 @@ declare class Arc extends Sprite {
302
309
  outlineWidth: number;
303
310
  getBoundingBox(): BoundingBox;
304
311
  getPath(): Path2D;
305
- draw(stamping?: boolean): void;
312
+ draw(stamping?: true): void;
306
313
  create(options?: ArcOptions): this;
307
314
  protected getCreateOptions(): {
308
315
  radius: number;
@@ -314,6 +321,7 @@ declare class Arc extends Sprite {
314
321
  y?: number;
315
322
  dir?: number;
316
323
  size?: number;
324
+ pivot?: Vec2;
317
325
  scene?: string;
318
326
  hidden?: boolean;
319
327
  layer?: number;
@@ -341,7 +349,7 @@ declare class RegularPolygon extends Sprite {
341
349
  outlineWidth: number;
342
350
  getBoundingBox(): BoundingBox;
343
351
  getPath(): Path2D;
344
- draw(stamping?: boolean): void;
352
+ draw(stamping?: true): void;
345
353
  create(options?: RegularPolygonOptions): this;
346
354
  protected getCreateOptions(): {
347
355
  sides: number;
@@ -353,6 +361,7 @@ declare class RegularPolygon extends Sprite {
353
361
  y?: number;
354
362
  dir?: number;
355
363
  size?: number;
364
+ pivot?: Vec2;
356
365
  scene?: string;
357
366
  hidden?: boolean;
358
367
  layer?: number;
@@ -378,7 +387,7 @@ declare class CustomPolygon extends Sprite {
378
387
  outlineWidth: number;
379
388
  getBoundingBox(): BoundingBox;
380
389
  getPath(): Path2D;
381
- draw(stamping?: boolean): void;
390
+ draw(stamping?: true): void;
382
391
  create(options?: CustomPolygonOptions): this;
383
392
  protected getCreateOptions(): {
384
393
  vertices: Vec2[];
@@ -389,6 +398,7 @@ declare class CustomPolygon extends Sprite {
389
398
  y?: number;
390
399
  dir?: number;
391
400
  size?: number;
401
+ pivot?: Vec2;
392
402
  scene?: string;
393
403
  hidden?: boolean;
394
404
  layer?: number;
@@ -421,6 +431,7 @@ declare class Pen extends Sprite {
421
431
  y?: number;
422
432
  dir?: number;
423
433
  size?: number;
434
+ pivot?: Vec2;
424
435
  scene?: string;
425
436
  hidden?: boolean;
426
437
  layer?: number;
@@ -430,6 +441,7 @@ declare class Pen extends Sprite {
430
441
  stamp(sprite: Sprite): void;
431
442
  eraseAll(): void;
432
443
  dot(): void;
444
+ drawSprite(sprite: Sprite): void;
433
445
  private drawLine;
434
446
  move(steps: number): void;
435
447
  setX(x: number): void;
@@ -460,7 +472,7 @@ declare class Text extends Sprite {
460
472
  private font;
461
473
  getBoundingBox(): BoundingBox;
462
474
  getPath(): Path2D;
463
- draw(stamping?: boolean): void;
475
+ draw(stamping?: true): void;
464
476
  create(options?: TextOptions): this;
465
477
  protected getCreateOptions(): {
466
478
  content: string | number;
@@ -505,7 +517,7 @@ declare class Button extends Sprite {
505
517
  outlineWidth: number;
506
518
  getBoundingBox(): BoundingBox;
507
519
  getPath(): Path2D;
508
- draw(stamping?: boolean): void;
520
+ draw(stamping?: true): void;
509
521
  create(options?: ButtonOptions): this;
510
522
  protected getCreateOptions(): {
511
523
  content: string | number;
@@ -521,6 +533,7 @@ declare class Button extends Sprite {
521
533
  y?: number;
522
534
  dir?: number;
523
535
  size?: number;
536
+ pivot?: Vec2;
524
537
  scene?: string;
525
538
  hidden?: boolean;
526
539
  layer?: number;
@@ -556,10 +569,11 @@ declare class ImageSprite extends Sprite {
556
569
  height: number;
557
570
  outlineColor: string;
558
571
  outlineWidth: number;
572
+ private imgBitmap;
559
573
  protected img: HTMLImageElement;
560
574
  getBoundingBox(): BoundingBox;
561
575
  getPath(): Path2D;
562
- draw(stamping?: boolean): void;
576
+ draw(stamping?: true): void;
563
577
  create(options?: ImageSpriteOptions): this;
564
578
  protected getCreateOptions(): {
565
579
  costumes: string[];
@@ -572,6 +586,7 @@ declare class ImageSprite extends Sprite {
572
586
  y?: number;
573
587
  dir?: number;
574
588
  size?: number;
589
+ pivot?: Vec2;
575
590
  scene?: string;
576
591
  hidden?: boolean;
577
592
  layer?: number;
@@ -606,6 +621,65 @@ declare class RigidCircle extends Circle implements RigidBodyOptions {
606
621
  constructor(options?: RigidCircleOptions);
607
622
  }
608
623
 
624
+ interface Object3DOptions {
625
+ vertices: Vec3[];
626
+ faces: [number, number, ...number[]][];
627
+ x?: number;
628
+ y?: number;
629
+ z?: number;
630
+ }
631
+ declare class Object3D {
632
+ x: number;
633
+ y: number;
634
+ z: number;
635
+ rotX: number;
636
+ rotY: number;
637
+ rotZ: number;
638
+ vertices: Vec3[];
639
+ faces: [number, number, ...number[]][];
640
+ constructor(options: Object3DOptions);
641
+ rotateX(deg: number): void;
642
+ rotateY(deg: number): void;
643
+ rotateZ(deg: number): void;
644
+ pointX(deg: number): void;
645
+ pointY(deg: number): void;
646
+ pointZ(deg: number): void;
647
+ }
648
+
649
+ interface WireframeRenderer3DOptions extends PenOptions {
650
+ objects: Object3D[];
651
+ }
652
+ declare class WireframeRenderer3D extends Pen {
653
+ FOV: number;
654
+ ASPECT: number;
655
+ Z_NEAR: number;
656
+ SPEED: number;
657
+ SENSITIVITY: number;
658
+ camX: number;
659
+ camY: number;
660
+ camZ: number;
661
+ camDirX: number;
662
+ camDirY: number;
663
+ camDirZ: number;
664
+ objects: Object3D[];
665
+ constructor(options: WireframeRenderer3DOptions);
666
+ registerControls(): void;
667
+ private project;
668
+ update(): void;
669
+ }
670
+
671
+ declare const cubeVertices: Vec3[];
672
+
673
+ declare const cubeFaces: [number, number, ...number[]][];
674
+
675
+ declare const tetrahedronVertices: Vec3[];
676
+
677
+ declare const tetrahedronFaces: [number, number, ...number[]][];
678
+
679
+ declare const octahedronVerticesVertices: Vec3[];
680
+
681
+ declare const octahedronFaces: [number, number, ...number[]][];
682
+
609
683
  type Mat2<T = number> = [
610
684
  [
611
685
  T,
@@ -677,6 +751,14 @@ declare const TScratch: {
677
751
  Watermark: typeof Watermark;
678
752
  ImageSprite: typeof ImageSprite;
679
753
  RigidCircle: typeof RigidCircle;
754
+ WireframeRenderer3D: typeof WireframeRenderer3D;
755
+ Object3D: typeof Object3D;
756
+ cubeVertices: Vec3[];
757
+ cubeFaces: [number, number, ...number[]][];
758
+ tetrahedronVertices: Vec3[];
759
+ tetrahedronFaces: [number, number, ...number[]][];
760
+ octahedronVertices: Vec3[];
761
+ octahedronFaces: [number, number, ...number[]][];
680
762
  scale: number;
681
763
  aspectRatio: number;
682
764
  setScale: typeof setScale;
@@ -685,4 +767,4 @@ declare const TScratch: {
685
767
  ctx: CanvasRenderingContext2D;
686
768
  };
687
769
 
688
- export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, CustomPolygon, type CustomPolygonOptions, Engine, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Multiplayer, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, Sprite, type SpriteOptions, Square, type SquareOptions, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, aspectRatio, canvas, ctx, TScratch as default, scale, setAspectRatio, setScale };
770
+ export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, CustomPolygon, type CustomPolygonOptions, Engine, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Multiplayer, Object3D, type Object3DOptions, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, Sprite, type SpriteOptions, Square, type SquareOptions, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D, type WireframeRenderer3DOptions, aspectRatio, canvas, ctx, cubeFaces, cubeVertices, TScratch as default, octahedronFaces, octahedronVerticesVertices as octahedronVertices, scale, setAspectRatio, setScale, tetrahedronFaces, tetrahedronVertices };