tscratch 0.7.4 → 0.8.0

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,13 @@
1
+ interface CameraOptions {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ declare class Camera {
6
+ x: number;
7
+ y: number;
8
+ constructor(options?: CameraOptions);
9
+ }
10
+
1
11
  type Vec2<T = number> = [T, T];
2
12
  type Vec3<T = number> = [T, T, T];
3
13
  type Vec4<T = number> = [T, T, T, T];
@@ -71,42 +81,41 @@ type SceneMap = Map<string, {
71
81
  loop: GameLoop | null;
72
82
  }>;
73
83
  declare class Engine {
74
- private static instance;
75
- private loopRunning;
76
- private gameLoop;
77
- maxFPS: number;
78
- deltaTime: number;
79
- private lastFrame;
80
- private refreshScheduled;
81
- private animationFrameId;
82
- private sounds;
83
- mouseX: number;
84
- mouseY: number;
85
- mouseDown: boolean;
86
- mouseClicked: boolean;
87
- private keysPressed;
88
- private currentScene;
89
- sceneMap: SceneMap;
90
- private variableMap;
91
- static init(): Engine;
92
- setScene(scene: string): void;
93
- setLoop(scene: string, loop: GameLoop): void;
94
- pauseLoop(): void;
95
- resumeLoop(): void;
96
- addSprite(sprite: Sprite): void;
97
- removeSprite(sprite: Sprite): void;
98
- setMaxFPS(maxFPS: number): Promise<void>;
99
- refresh(): void;
100
- wait(ms: number): Promise<void>;
101
- waitUntil(conditionGetter: () => boolean): Promise<void>;
102
- setVariable<T = any>(key: string, value: T): void;
103
- getVariable<T = unknown>(key: string): T;
104
- hovering(sprite: Sprite): boolean;
105
- keyPressed(key: string): boolean;
106
- playSound(src: string): HTMLAudioElement;
107
- stopSound(sound: HTMLAudioElement): void;
108
- stopAllSounds(): void;
109
- private constructor();
84
+ private static loopRunning;
85
+ private static gameLoop;
86
+ static maxFPS: number;
87
+ static deltaTime: number;
88
+ private static lastFrame;
89
+ private static refreshScheduled;
90
+ private static animationFrameId;
91
+ private static sounds;
92
+ static camera: Camera;
93
+ static mouseX: number;
94
+ static mouseY: number;
95
+ static mouseDown: boolean;
96
+ static mouseClicked: boolean;
97
+ private static keysPressed;
98
+ private static currentScene;
99
+ static sceneMap: SceneMap;
100
+ private static variableMap;
101
+ static init(): void;
102
+ static setScene(scene: string): void;
103
+ static setLoop(scene: string, loop: GameLoop): void;
104
+ static pauseLoop(): void;
105
+ static resumeLoop(): void;
106
+ static addSprite(sprite: Sprite): void;
107
+ static removeSprite(sprite: Sprite): void;
108
+ static setMaxFPS(maxFPS: number): Promise<void>;
109
+ static refresh(): void;
110
+ static wait(ms: number): Promise<void>;
111
+ static waitUntil(conditionGetter: () => boolean): Promise<void>;
112
+ static setVariable<T = any>(key: string, value: T): void;
113
+ static getVariable<T = unknown>(key: string): T;
114
+ static hovering(sprite: Sprite): boolean;
115
+ static keyPressed(key: string): boolean;
116
+ static playSound(src: string): HTMLAudioElement;
117
+ static stopSound(sound: HTMLAudioElement): void;
118
+ static stopAllSounds(): void;
110
119
  }
111
120
 
112
121
  declare const canvas: HTMLCanvasElement;
@@ -117,6 +126,7 @@ declare function setScale(newScale: number): void;
117
126
  declare function setAspectRatio(newAspectRatio: number): void;
118
127
 
119
128
  declare class TSCMath {
129
+ private constructor();
120
130
  static pickRandom(min: number, max: number): number;
121
131
  static magnitude(v: Vec2): number;
122
132
  static magnitude(v: Vec3): number;
@@ -639,27 +649,45 @@ declare class RigidCircle extends Circle implements RigidBodyOptions {
639
649
  constructor(options?: RigidCircleOptions);
640
650
  }
641
651
 
652
+ interface Camera3DOptions {
653
+ x: number;
654
+ y: number;
655
+ z: number;
656
+ dirX: number;
657
+ dirY: number;
658
+ dirZ: number;
659
+ }
660
+ declare class Camera3D {
661
+ x: number;
662
+ y: number;
663
+ z: number;
664
+ dirX: number;
665
+ dirY: number;
666
+ dirZ: number;
667
+ constructor(options?: Camera3DOptions);
668
+ }
669
+
642
670
  interface Object3DOptions {
643
671
  vertices: Vec3[];
644
672
  faces: [number, number, ...number[]][];
645
673
  x?: number;
646
674
  y?: number;
647
675
  z?: number;
648
- rotX?: number;
649
- rotY?: number;
650
- rotZ?: number;
676
+ dirX?: number;
677
+ dirY?: number;
678
+ dirZ?: number;
651
679
  color?: string;
652
- scale?: number;
680
+ size?: number;
653
681
  }
654
682
  declare class Object3D {
655
683
  x: number;
656
684
  y: number;
657
685
  z: number;
658
- rotX: number;
659
- rotY: number;
660
- rotZ: number;
686
+ dirX: number;
687
+ dirY: number;
688
+ dirZ: number;
661
689
  color: string;
662
- scale: number;
690
+ size: number;
663
691
  vertices: Vec3[];
664
692
  faces: [number, number, ...number[]][];
665
693
  constructor(options: Object3DOptions);
@@ -675,52 +703,34 @@ declare class Object3D {
675
703
  };
676
704
  }
677
705
 
678
- interface WireframeRenderer3DOptions extends PenOptions {
706
+ interface Renderer3DOptions extends PenOptions {
679
707
  objects: Object3D[];
708
+ camera: Camera3D;
680
709
  }
681
- declare class WireframeRenderer3D extends Pen {
710
+ declare abstract class Renderer3D extends Pen {
682
711
  FOV: number;
683
712
  ASPECT: number;
684
713
  Z_NEAR: number;
685
714
  SPEED: number;
686
715
  SENSITIVITY: number;
687
- camX: number;
688
- camY: number;
689
- camZ: number;
690
- camDirX: number;
691
- camDirY: number;
692
- camDirZ: number;
716
+ camera: Camera3D;
693
717
  objects: Object3D[];
694
- constructor(options: WireframeRenderer3DOptions);
718
+ constructor(options: Renderer3DOptions);
719
+ abstract render(): void;
695
720
  registerControls(): void;
696
- private project;
697
- render(): void;
721
+ protected project(vertices: Vec3[]): Vec2[];
698
722
  }
699
723
 
700
- interface SolidRenderer3DOptions extends PenOptions {
701
- objects: Object3D[];
724
+ declare class WireframeRenderer3D extends Renderer3D {
725
+ render(): void;
702
726
  }
703
- declare class SolidRenderer3D extends Pen {
704
- FOV: number;
705
- ASPECT: number;
706
- Z_NEAR: number;
707
- SPEED: number;
708
- SENSITIVITY: number;
727
+
728
+ declare class SolidRenderer3D extends Renderer3D {
709
729
  AMBIENT_LIGHT_INTENSITY: number;
710
730
  DIRECTED_LIGHT_INTENSITY: number;
711
731
  DIRECTED_LIGHT_DIR: Vec3;
712
- camX: number;
713
- camY: number;
714
- camZ: number;
715
- camDirX: number;
716
- camDirY: number;
717
- camDirZ: number;
718
- objects: Object3D[];
719
- constructor(options: SolidRenderer3DOptions);
720
- registerControls(): void;
721
- private project;
722
732
  render(): void;
723
- stringToHSL(color: string): {
733
+ static stringToHSL(color: string): {
724
734
  h: number;
725
735
  s: number;
726
736
  l: number;
@@ -823,6 +833,7 @@ type Mat4<T = number> = [
823
833
 
824
834
  declare const TScratch: {
825
835
  Engine: typeof Engine;
836
+ Camera: typeof Camera;
826
837
  Sprite: typeof Sprite;
827
838
  TSCMath: typeof TSCMath;
828
839
  Multiplayer: typeof Multiplayer;
@@ -839,6 +850,8 @@ declare const TScratch: {
839
850
  Watermark: typeof Watermark;
840
851
  ImageSprite: typeof ImageSprite;
841
852
  RigidCircle: typeof RigidCircle;
853
+ Camera3D: typeof Camera3D;
854
+ Renderer3D: typeof Renderer3D;
842
855
  WireframeRenderer3D: typeof WireframeRenderer3D;
843
856
  SolidRenderer3D: typeof SolidRenderer3D;
844
857
  Object3D: typeof Object3D;
@@ -857,4 +870,4 @@ declare const TScratch: {
857
870
  ctx: CanvasRenderingContext2D;
858
871
  };
859
872
 
860
- export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, Cube, Cuboid, type CuboidOptions, CustomPolygon, type CustomPolygonOptions, Engine, Icosahedron, Icosphere, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Monkey, Multiplayer, Object3D, type Object3DOptions, Octahedron, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, SolidRenderer3D, type SolidRenderer3DOptions, Sprite, type SpriteOptions, Square, type SquareOptions, TSCMath, Tetrahedron, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D, type WireframeRenderer3DOptions, aspectRatio, canvas, ctx, TScratch as default, scale, setAspectRatio, setScale };
873
+ export { Arc, type ArcOptions, Button, type ButtonOptions, Camera, Camera3D, type Camera3DOptions, type CameraOptions, Circle, type CircleOptions, Cube, Cuboid, type CuboidOptions, CustomPolygon, type CustomPolygonOptions, Engine, Icosahedron, Icosphere, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Monkey, Multiplayer, Object3D, type Object3DOptions, Octahedron, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, Renderer3D, type Renderer3DOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, SolidRenderer3D, Sprite, type SpriteOptions, Square, type SquareOptions, TSCMath, Tetrahedron, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D, aspectRatio, canvas, ctx, TScratch as default, scale, setAspectRatio, setScale };
@@ -1,3 +1,13 @@
1
+ interface CameraOptions {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ declare class Camera {
6
+ x: number;
7
+ y: number;
8
+ constructor(options?: CameraOptions);
9
+ }
10
+
1
11
  type Vec2<T = number> = [T, T];
2
12
  type Vec3<T = number> = [T, T, T];
3
13
  type Vec4<T = number> = [T, T, T, T];
@@ -71,42 +81,41 @@ type SceneMap = Map<string, {
71
81
  loop: GameLoop | null;
72
82
  }>;
73
83
  declare class Engine {
74
- private static instance;
75
- private loopRunning;
76
- private gameLoop;
77
- maxFPS: number;
78
- deltaTime: number;
79
- private lastFrame;
80
- private refreshScheduled;
81
- private animationFrameId;
82
- private sounds;
83
- mouseX: number;
84
- mouseY: number;
85
- mouseDown: boolean;
86
- mouseClicked: boolean;
87
- private keysPressed;
88
- private currentScene;
89
- sceneMap: SceneMap;
90
- private variableMap;
91
- static init(): Engine;
92
- setScene(scene: string): void;
93
- setLoop(scene: string, loop: GameLoop): void;
94
- pauseLoop(): void;
95
- resumeLoop(): void;
96
- addSprite(sprite: Sprite): void;
97
- removeSprite(sprite: Sprite): void;
98
- setMaxFPS(maxFPS: number): Promise<void>;
99
- refresh(): void;
100
- wait(ms: number): Promise<void>;
101
- waitUntil(conditionGetter: () => boolean): Promise<void>;
102
- setVariable<T = any>(key: string, value: T): void;
103
- getVariable<T = unknown>(key: string): T;
104
- hovering(sprite: Sprite): boolean;
105
- keyPressed(key: string): boolean;
106
- playSound(src: string): HTMLAudioElement;
107
- stopSound(sound: HTMLAudioElement): void;
108
- stopAllSounds(): void;
109
- private constructor();
84
+ private static loopRunning;
85
+ private static gameLoop;
86
+ static maxFPS: number;
87
+ static deltaTime: number;
88
+ private static lastFrame;
89
+ private static refreshScheduled;
90
+ private static animationFrameId;
91
+ private static sounds;
92
+ static camera: Camera;
93
+ static mouseX: number;
94
+ static mouseY: number;
95
+ static mouseDown: boolean;
96
+ static mouseClicked: boolean;
97
+ private static keysPressed;
98
+ private static currentScene;
99
+ static sceneMap: SceneMap;
100
+ private static variableMap;
101
+ static init(): void;
102
+ static setScene(scene: string): void;
103
+ static setLoop(scene: string, loop: GameLoop): void;
104
+ static pauseLoop(): void;
105
+ static resumeLoop(): void;
106
+ static addSprite(sprite: Sprite): void;
107
+ static removeSprite(sprite: Sprite): void;
108
+ static setMaxFPS(maxFPS: number): Promise<void>;
109
+ static refresh(): void;
110
+ static wait(ms: number): Promise<void>;
111
+ static waitUntil(conditionGetter: () => boolean): Promise<void>;
112
+ static setVariable<T = any>(key: string, value: T): void;
113
+ static getVariable<T = unknown>(key: string): T;
114
+ static hovering(sprite: Sprite): boolean;
115
+ static keyPressed(key: string): boolean;
116
+ static playSound(src: string): HTMLAudioElement;
117
+ static stopSound(sound: HTMLAudioElement): void;
118
+ static stopAllSounds(): void;
110
119
  }
111
120
 
112
121
  declare const canvas: HTMLCanvasElement;
@@ -117,6 +126,7 @@ declare function setScale(newScale: number): void;
117
126
  declare function setAspectRatio(newAspectRatio: number): void;
118
127
 
119
128
  declare class TSCMath {
129
+ private constructor();
120
130
  static pickRandom(min: number, max: number): number;
121
131
  static magnitude(v: Vec2): number;
122
132
  static magnitude(v: Vec3): number;
@@ -639,27 +649,45 @@ declare class RigidCircle extends Circle implements RigidBodyOptions {
639
649
  constructor(options?: RigidCircleOptions);
640
650
  }
641
651
 
652
+ interface Camera3DOptions {
653
+ x: number;
654
+ y: number;
655
+ z: number;
656
+ dirX: number;
657
+ dirY: number;
658
+ dirZ: number;
659
+ }
660
+ declare class Camera3D {
661
+ x: number;
662
+ y: number;
663
+ z: number;
664
+ dirX: number;
665
+ dirY: number;
666
+ dirZ: number;
667
+ constructor(options?: Camera3DOptions);
668
+ }
669
+
642
670
  interface Object3DOptions {
643
671
  vertices: Vec3[];
644
672
  faces: [number, number, ...number[]][];
645
673
  x?: number;
646
674
  y?: number;
647
675
  z?: number;
648
- rotX?: number;
649
- rotY?: number;
650
- rotZ?: number;
676
+ dirX?: number;
677
+ dirY?: number;
678
+ dirZ?: number;
651
679
  color?: string;
652
- scale?: number;
680
+ size?: number;
653
681
  }
654
682
  declare class Object3D {
655
683
  x: number;
656
684
  y: number;
657
685
  z: number;
658
- rotX: number;
659
- rotY: number;
660
- rotZ: number;
686
+ dirX: number;
687
+ dirY: number;
688
+ dirZ: number;
661
689
  color: string;
662
- scale: number;
690
+ size: number;
663
691
  vertices: Vec3[];
664
692
  faces: [number, number, ...number[]][];
665
693
  constructor(options: Object3DOptions);
@@ -675,52 +703,34 @@ declare class Object3D {
675
703
  };
676
704
  }
677
705
 
678
- interface WireframeRenderer3DOptions extends PenOptions {
706
+ interface Renderer3DOptions extends PenOptions {
679
707
  objects: Object3D[];
708
+ camera: Camera3D;
680
709
  }
681
- declare class WireframeRenderer3D extends Pen {
710
+ declare abstract class Renderer3D extends Pen {
682
711
  FOV: number;
683
712
  ASPECT: number;
684
713
  Z_NEAR: number;
685
714
  SPEED: number;
686
715
  SENSITIVITY: number;
687
- camX: number;
688
- camY: number;
689
- camZ: number;
690
- camDirX: number;
691
- camDirY: number;
692
- camDirZ: number;
716
+ camera: Camera3D;
693
717
  objects: Object3D[];
694
- constructor(options: WireframeRenderer3DOptions);
718
+ constructor(options: Renderer3DOptions);
719
+ abstract render(): void;
695
720
  registerControls(): void;
696
- private project;
697
- render(): void;
721
+ protected project(vertices: Vec3[]): Vec2[];
698
722
  }
699
723
 
700
- interface SolidRenderer3DOptions extends PenOptions {
701
- objects: Object3D[];
724
+ declare class WireframeRenderer3D extends Renderer3D {
725
+ render(): void;
702
726
  }
703
- declare class SolidRenderer3D extends Pen {
704
- FOV: number;
705
- ASPECT: number;
706
- Z_NEAR: number;
707
- SPEED: number;
708
- SENSITIVITY: number;
727
+
728
+ declare class SolidRenderer3D extends Renderer3D {
709
729
  AMBIENT_LIGHT_INTENSITY: number;
710
730
  DIRECTED_LIGHT_INTENSITY: number;
711
731
  DIRECTED_LIGHT_DIR: Vec3;
712
- camX: number;
713
- camY: number;
714
- camZ: number;
715
- camDirX: number;
716
- camDirY: number;
717
- camDirZ: number;
718
- objects: Object3D[];
719
- constructor(options: SolidRenderer3DOptions);
720
- registerControls(): void;
721
- private project;
722
732
  render(): void;
723
- stringToHSL(color: string): {
733
+ static stringToHSL(color: string): {
724
734
  h: number;
725
735
  s: number;
726
736
  l: number;
@@ -823,6 +833,7 @@ type Mat4<T = number> = [
823
833
 
824
834
  declare const TScratch: {
825
835
  Engine: typeof Engine;
836
+ Camera: typeof Camera;
826
837
  Sprite: typeof Sprite;
827
838
  TSCMath: typeof TSCMath;
828
839
  Multiplayer: typeof Multiplayer;
@@ -839,6 +850,8 @@ declare const TScratch: {
839
850
  Watermark: typeof Watermark;
840
851
  ImageSprite: typeof ImageSprite;
841
852
  RigidCircle: typeof RigidCircle;
853
+ Camera3D: typeof Camera3D;
854
+ Renderer3D: typeof Renderer3D;
842
855
  WireframeRenderer3D: typeof WireframeRenderer3D;
843
856
  SolidRenderer3D: typeof SolidRenderer3D;
844
857
  Object3D: typeof Object3D;
@@ -857,4 +870,4 @@ declare const TScratch: {
857
870
  ctx: CanvasRenderingContext2D;
858
871
  };
859
872
 
860
- export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, Cube, Cuboid, type CuboidOptions, CustomPolygon, type CustomPolygonOptions, Engine, Icosahedron, Icosphere, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Monkey, Multiplayer, Object3D, type Object3DOptions, Octahedron, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, SolidRenderer3D, type SolidRenderer3DOptions, Sprite, type SpriteOptions, Square, type SquareOptions, TSCMath, Tetrahedron, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D, type WireframeRenderer3DOptions, aspectRatio, canvas, ctx, TScratch as default, scale, setAspectRatio, setScale };
873
+ export { Arc, type ArcOptions, Button, type ButtonOptions, Camera, Camera3D, type Camera3DOptions, type CameraOptions, Circle, type CircleOptions, Cube, Cuboid, type CuboidOptions, CustomPolygon, type CustomPolygonOptions, Engine, Icosahedron, Icosphere, ImageSprite, type ImageSpriteOptions, type Mat2, type Mat3, type Mat4, Monkey, Multiplayer, Object3D, type Object3DOptions, Octahedron, Oval, type OvalOptions, Pen, type PenOptions, Rectangle, type RectangleOptions, RegularPolygon, type RegularPolygonOptions, Renderer3D, type Renderer3DOptions, type RigidBodyOptions, RigidCircle, type RigidCircleOptions, SolidRenderer3D, Sprite, type SpriteOptions, Square, type SquareOptions, TSCMath, Tetrahedron, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D, aspectRatio, canvas, ctx, TScratch as default, scale, setAspectRatio, setScale };