tscratch 0.7.3 → 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.
- package/dist/client/index.cjs +2 -2
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +149 -69
- package/dist/client/index.d.ts +149 -69
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/package.json +2 -1
package/dist/client/index.d.cts
CHANGED
|
@@ -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,56 +81,41 @@ type SceneMap = Map<string, {
|
|
|
71
81
|
loop: GameLoop | null;
|
|
72
82
|
}>;
|
|
73
83
|
declare class Engine {
|
|
74
|
-
private static
|
|
75
|
-
private
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
private
|
|
80
|
-
private
|
|
81
|
-
private
|
|
82
|
-
|
|
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():
|
|
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
|
-
pickRandom(min: number, max: number): number;
|
|
110
|
-
dotProduct(...vectors: [Vec2, Vec2] | [Vec3, Vec3] | [Vec4, Vec4]): number;
|
|
111
|
-
sin(deg: number): number;
|
|
112
|
-
cos(deg: number): number;
|
|
113
|
-
tan(deg: number): number;
|
|
114
|
-
csc(deg: number): number;
|
|
115
|
-
sec(deg: number): number;
|
|
116
|
-
cot(deg: number): number;
|
|
117
|
-
asin(val: number): number;
|
|
118
|
-
acos(val: number): number;
|
|
119
|
-
acsc(val: number): number;
|
|
120
|
-
asec(val: number): number;
|
|
121
|
-
toRadians(deg: number): number;
|
|
122
|
-
toDegrees(rad: number): number;
|
|
123
|
-
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;
|
|
124
119
|
}
|
|
125
120
|
|
|
126
121
|
declare const canvas: HTMLCanvasElement;
|
|
@@ -130,6 +125,39 @@ declare let scale: number;
|
|
|
130
125
|
declare function setScale(newScale: number): void;
|
|
131
126
|
declare function setAspectRatio(newAspectRatio: number): void;
|
|
132
127
|
|
|
128
|
+
declare class TSCMath {
|
|
129
|
+
private constructor();
|
|
130
|
+
static pickRandom(min: number, max: number): number;
|
|
131
|
+
static magnitude(v: Vec2): number;
|
|
132
|
+
static magnitude(v: Vec3): number;
|
|
133
|
+
static magnitude(v: Vec4): number;
|
|
134
|
+
static normalize(v: Vec2): Vec2;
|
|
135
|
+
static normalize(v: Vec3): Vec3;
|
|
136
|
+
static normalize(v: Vec4): Vec4;
|
|
137
|
+
static add(a: Vec2, b: Vec2): Vec2;
|
|
138
|
+
static add(a: Vec3, b: Vec3): Vec3;
|
|
139
|
+
static add(a: Vec4, b: Vec4): Vec4;
|
|
140
|
+
static subtract(a: Vec2, b: Vec2): Vec2;
|
|
141
|
+
static subtract(a: Vec3, b: Vec3): Vec3;
|
|
142
|
+
static subtract(a: Vec4, b: Vec4): Vec4;
|
|
143
|
+
static dot(a: Vec2, b: Vec2): number;
|
|
144
|
+
static dot(a: Vec3, b: Vec3): number;
|
|
145
|
+
static dot(a: Vec4, b: Vec4): number;
|
|
146
|
+
static cross(a: Vec3, b: Vec3): Vec3;
|
|
147
|
+
static toRadians(deg: number): number;
|
|
148
|
+
static toDegrees(rad: number): number;
|
|
149
|
+
static sin(deg: number): number;
|
|
150
|
+
static cos(deg: number): number;
|
|
151
|
+
static tan(deg: number): number;
|
|
152
|
+
static csc(deg: number): number;
|
|
153
|
+
static sec(deg: number): number;
|
|
154
|
+
static cot(deg: number): number;
|
|
155
|
+
static asin(val: number): number;
|
|
156
|
+
static acos(val: number): number;
|
|
157
|
+
static acsc(val: number): number;
|
|
158
|
+
static asec(val: number): number;
|
|
159
|
+
}
|
|
160
|
+
|
|
133
161
|
declare class Multiplayer {
|
|
134
162
|
private static instance;
|
|
135
163
|
private socket;
|
|
@@ -621,27 +649,45 @@ declare class RigidCircle extends Circle implements RigidBodyOptions {
|
|
|
621
649
|
constructor(options?: RigidCircleOptions);
|
|
622
650
|
}
|
|
623
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
|
+
|
|
624
670
|
interface Object3DOptions {
|
|
625
671
|
vertices: Vec3[];
|
|
626
672
|
faces: [number, number, ...number[]][];
|
|
627
673
|
x?: number;
|
|
628
674
|
y?: number;
|
|
629
675
|
z?: number;
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
676
|
+
dirX?: number;
|
|
677
|
+
dirY?: number;
|
|
678
|
+
dirZ?: number;
|
|
633
679
|
color?: string;
|
|
634
|
-
|
|
680
|
+
size?: number;
|
|
635
681
|
}
|
|
636
682
|
declare class Object3D {
|
|
637
683
|
x: number;
|
|
638
684
|
y: number;
|
|
639
685
|
z: number;
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
686
|
+
dirX: number;
|
|
687
|
+
dirY: number;
|
|
688
|
+
dirZ: number;
|
|
643
689
|
color: string;
|
|
644
|
-
|
|
690
|
+
size: number;
|
|
645
691
|
vertices: Vec3[];
|
|
646
692
|
faces: [number, number, ...number[]][];
|
|
647
693
|
constructor(options: Object3DOptions);
|
|
@@ -657,28 +703,40 @@ declare class Object3D {
|
|
|
657
703
|
};
|
|
658
704
|
}
|
|
659
705
|
|
|
660
|
-
interface
|
|
706
|
+
interface Renderer3DOptions extends PenOptions {
|
|
661
707
|
objects: Object3D[];
|
|
708
|
+
camera: Camera3D;
|
|
662
709
|
}
|
|
663
|
-
declare class
|
|
710
|
+
declare abstract class Renderer3D extends Pen {
|
|
664
711
|
FOV: number;
|
|
665
712
|
ASPECT: number;
|
|
666
713
|
Z_NEAR: number;
|
|
667
714
|
SPEED: number;
|
|
668
715
|
SENSITIVITY: number;
|
|
669
|
-
|
|
670
|
-
camY: number;
|
|
671
|
-
camZ: number;
|
|
672
|
-
camDirX: number;
|
|
673
|
-
camDirY: number;
|
|
674
|
-
camDirZ: number;
|
|
716
|
+
camera: Camera3D;
|
|
675
717
|
objects: Object3D[];
|
|
676
|
-
constructor(options:
|
|
718
|
+
constructor(options: Renderer3DOptions);
|
|
719
|
+
abstract render(): void;
|
|
677
720
|
registerControls(): void;
|
|
678
|
-
|
|
721
|
+
protected project(vertices: Vec3[]): Vec2[];
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
declare class WireframeRenderer3D extends Renderer3D {
|
|
679
725
|
render(): void;
|
|
680
726
|
}
|
|
681
727
|
|
|
728
|
+
declare class SolidRenderer3D extends Renderer3D {
|
|
729
|
+
AMBIENT_LIGHT_INTENSITY: number;
|
|
730
|
+
DIRECTED_LIGHT_INTENSITY: number;
|
|
731
|
+
DIRECTED_LIGHT_DIR: Vec3;
|
|
732
|
+
render(): void;
|
|
733
|
+
static stringToHSL(color: string): {
|
|
734
|
+
h: number;
|
|
735
|
+
s: number;
|
|
736
|
+
l: number;
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
|
|
682
740
|
declare class Tetrahedron extends Object3D {
|
|
683
741
|
constructor(options?: Partial<Object3DOptions>);
|
|
684
742
|
}
|
|
@@ -703,6 +761,22 @@ declare class Monkey extends Object3D {
|
|
|
703
761
|
constructor(options?: Partial<Object3DOptions>);
|
|
704
762
|
}
|
|
705
763
|
|
|
764
|
+
interface CuboidOptions extends Object3DOptions {
|
|
765
|
+
width: number;
|
|
766
|
+
height: number;
|
|
767
|
+
length: number;
|
|
768
|
+
}
|
|
769
|
+
declare class Cuboid extends Object3D {
|
|
770
|
+
width: number;
|
|
771
|
+
height: number;
|
|
772
|
+
length: number;
|
|
773
|
+
constructor(options?: Partial<CuboidOptions>);
|
|
774
|
+
private computeVertices;
|
|
775
|
+
setWidth(width: number): void;
|
|
776
|
+
setHeight(height: number): void;
|
|
777
|
+
setLength(length: number): void;
|
|
778
|
+
}
|
|
779
|
+
|
|
706
780
|
type Mat2<T = number> = [
|
|
707
781
|
[
|
|
708
782
|
T,
|
|
@@ -759,7 +833,9 @@ type Mat4<T = number> = [
|
|
|
759
833
|
|
|
760
834
|
declare const TScratch: {
|
|
761
835
|
Engine: typeof Engine;
|
|
836
|
+
Camera: typeof Camera;
|
|
762
837
|
Sprite: typeof Sprite;
|
|
838
|
+
TSCMath: typeof TSCMath;
|
|
763
839
|
Multiplayer: typeof Multiplayer;
|
|
764
840
|
Rectangle: typeof Rectangle;
|
|
765
841
|
Square: typeof Square;
|
|
@@ -774,7 +850,10 @@ declare const TScratch: {
|
|
|
774
850
|
Watermark: typeof Watermark;
|
|
775
851
|
ImageSprite: typeof ImageSprite;
|
|
776
852
|
RigidCircle: typeof RigidCircle;
|
|
853
|
+
Camera3D: typeof Camera3D;
|
|
854
|
+
Renderer3D: typeof Renderer3D;
|
|
777
855
|
WireframeRenderer3D: typeof WireframeRenderer3D;
|
|
856
|
+
SolidRenderer3D: typeof SolidRenderer3D;
|
|
778
857
|
Object3D: typeof Object3D;
|
|
779
858
|
Tetrahedron: typeof Tetrahedron;
|
|
780
859
|
Cube: typeof Cube;
|
|
@@ -782,6 +861,7 @@ declare const TScratch: {
|
|
|
782
861
|
Icosahedron: typeof Icosahedron;
|
|
783
862
|
Icosphere: typeof Icosphere;
|
|
784
863
|
Monkey: typeof Monkey;
|
|
864
|
+
Cuboid: typeof Cuboid;
|
|
785
865
|
scale: number;
|
|
786
866
|
aspectRatio: number;
|
|
787
867
|
setScale: typeof setScale;
|
|
@@ -790,4 +870,4 @@ declare const TScratch: {
|
|
|
790
870
|
ctx: CanvasRenderingContext2D;
|
|
791
871
|
};
|
|
792
872
|
|
|
793
|
-
export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, Cube, 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, Sprite, type SpriteOptions, Square, type SquareOptions, Tetrahedron, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D,
|
|
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 };
|
package/dist/client/index.d.ts
CHANGED
|
@@ -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,56 +81,41 @@ type SceneMap = Map<string, {
|
|
|
71
81
|
loop: GameLoop | null;
|
|
72
82
|
}>;
|
|
73
83
|
declare class Engine {
|
|
74
|
-
private static
|
|
75
|
-
private
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
private
|
|
80
|
-
private
|
|
81
|
-
private
|
|
82
|
-
|
|
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():
|
|
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
|
-
pickRandom(min: number, max: number): number;
|
|
110
|
-
dotProduct(...vectors: [Vec2, Vec2] | [Vec3, Vec3] | [Vec4, Vec4]): number;
|
|
111
|
-
sin(deg: number): number;
|
|
112
|
-
cos(deg: number): number;
|
|
113
|
-
tan(deg: number): number;
|
|
114
|
-
csc(deg: number): number;
|
|
115
|
-
sec(deg: number): number;
|
|
116
|
-
cot(deg: number): number;
|
|
117
|
-
asin(val: number): number;
|
|
118
|
-
acos(val: number): number;
|
|
119
|
-
acsc(val: number): number;
|
|
120
|
-
asec(val: number): number;
|
|
121
|
-
toRadians(deg: number): number;
|
|
122
|
-
toDegrees(rad: number): number;
|
|
123
|
-
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;
|
|
124
119
|
}
|
|
125
120
|
|
|
126
121
|
declare const canvas: HTMLCanvasElement;
|
|
@@ -130,6 +125,39 @@ declare let scale: number;
|
|
|
130
125
|
declare function setScale(newScale: number): void;
|
|
131
126
|
declare function setAspectRatio(newAspectRatio: number): void;
|
|
132
127
|
|
|
128
|
+
declare class TSCMath {
|
|
129
|
+
private constructor();
|
|
130
|
+
static pickRandom(min: number, max: number): number;
|
|
131
|
+
static magnitude(v: Vec2): number;
|
|
132
|
+
static magnitude(v: Vec3): number;
|
|
133
|
+
static magnitude(v: Vec4): number;
|
|
134
|
+
static normalize(v: Vec2): Vec2;
|
|
135
|
+
static normalize(v: Vec3): Vec3;
|
|
136
|
+
static normalize(v: Vec4): Vec4;
|
|
137
|
+
static add(a: Vec2, b: Vec2): Vec2;
|
|
138
|
+
static add(a: Vec3, b: Vec3): Vec3;
|
|
139
|
+
static add(a: Vec4, b: Vec4): Vec4;
|
|
140
|
+
static subtract(a: Vec2, b: Vec2): Vec2;
|
|
141
|
+
static subtract(a: Vec3, b: Vec3): Vec3;
|
|
142
|
+
static subtract(a: Vec4, b: Vec4): Vec4;
|
|
143
|
+
static dot(a: Vec2, b: Vec2): number;
|
|
144
|
+
static dot(a: Vec3, b: Vec3): number;
|
|
145
|
+
static dot(a: Vec4, b: Vec4): number;
|
|
146
|
+
static cross(a: Vec3, b: Vec3): Vec3;
|
|
147
|
+
static toRadians(deg: number): number;
|
|
148
|
+
static toDegrees(rad: number): number;
|
|
149
|
+
static sin(deg: number): number;
|
|
150
|
+
static cos(deg: number): number;
|
|
151
|
+
static tan(deg: number): number;
|
|
152
|
+
static csc(deg: number): number;
|
|
153
|
+
static sec(deg: number): number;
|
|
154
|
+
static cot(deg: number): number;
|
|
155
|
+
static asin(val: number): number;
|
|
156
|
+
static acos(val: number): number;
|
|
157
|
+
static acsc(val: number): number;
|
|
158
|
+
static asec(val: number): number;
|
|
159
|
+
}
|
|
160
|
+
|
|
133
161
|
declare class Multiplayer {
|
|
134
162
|
private static instance;
|
|
135
163
|
private socket;
|
|
@@ -621,27 +649,45 @@ declare class RigidCircle extends Circle implements RigidBodyOptions {
|
|
|
621
649
|
constructor(options?: RigidCircleOptions);
|
|
622
650
|
}
|
|
623
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
|
+
|
|
624
670
|
interface Object3DOptions {
|
|
625
671
|
vertices: Vec3[];
|
|
626
672
|
faces: [number, number, ...number[]][];
|
|
627
673
|
x?: number;
|
|
628
674
|
y?: number;
|
|
629
675
|
z?: number;
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
676
|
+
dirX?: number;
|
|
677
|
+
dirY?: number;
|
|
678
|
+
dirZ?: number;
|
|
633
679
|
color?: string;
|
|
634
|
-
|
|
680
|
+
size?: number;
|
|
635
681
|
}
|
|
636
682
|
declare class Object3D {
|
|
637
683
|
x: number;
|
|
638
684
|
y: number;
|
|
639
685
|
z: number;
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
686
|
+
dirX: number;
|
|
687
|
+
dirY: number;
|
|
688
|
+
dirZ: number;
|
|
643
689
|
color: string;
|
|
644
|
-
|
|
690
|
+
size: number;
|
|
645
691
|
vertices: Vec3[];
|
|
646
692
|
faces: [number, number, ...number[]][];
|
|
647
693
|
constructor(options: Object3DOptions);
|
|
@@ -657,28 +703,40 @@ declare class Object3D {
|
|
|
657
703
|
};
|
|
658
704
|
}
|
|
659
705
|
|
|
660
|
-
interface
|
|
706
|
+
interface Renderer3DOptions extends PenOptions {
|
|
661
707
|
objects: Object3D[];
|
|
708
|
+
camera: Camera3D;
|
|
662
709
|
}
|
|
663
|
-
declare class
|
|
710
|
+
declare abstract class Renderer3D extends Pen {
|
|
664
711
|
FOV: number;
|
|
665
712
|
ASPECT: number;
|
|
666
713
|
Z_NEAR: number;
|
|
667
714
|
SPEED: number;
|
|
668
715
|
SENSITIVITY: number;
|
|
669
|
-
|
|
670
|
-
camY: number;
|
|
671
|
-
camZ: number;
|
|
672
|
-
camDirX: number;
|
|
673
|
-
camDirY: number;
|
|
674
|
-
camDirZ: number;
|
|
716
|
+
camera: Camera3D;
|
|
675
717
|
objects: Object3D[];
|
|
676
|
-
constructor(options:
|
|
718
|
+
constructor(options: Renderer3DOptions);
|
|
719
|
+
abstract render(): void;
|
|
677
720
|
registerControls(): void;
|
|
678
|
-
|
|
721
|
+
protected project(vertices: Vec3[]): Vec2[];
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
declare class WireframeRenderer3D extends Renderer3D {
|
|
679
725
|
render(): void;
|
|
680
726
|
}
|
|
681
727
|
|
|
728
|
+
declare class SolidRenderer3D extends Renderer3D {
|
|
729
|
+
AMBIENT_LIGHT_INTENSITY: number;
|
|
730
|
+
DIRECTED_LIGHT_INTENSITY: number;
|
|
731
|
+
DIRECTED_LIGHT_DIR: Vec3;
|
|
732
|
+
render(): void;
|
|
733
|
+
static stringToHSL(color: string): {
|
|
734
|
+
h: number;
|
|
735
|
+
s: number;
|
|
736
|
+
l: number;
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
|
|
682
740
|
declare class Tetrahedron extends Object3D {
|
|
683
741
|
constructor(options?: Partial<Object3DOptions>);
|
|
684
742
|
}
|
|
@@ -703,6 +761,22 @@ declare class Monkey extends Object3D {
|
|
|
703
761
|
constructor(options?: Partial<Object3DOptions>);
|
|
704
762
|
}
|
|
705
763
|
|
|
764
|
+
interface CuboidOptions extends Object3DOptions {
|
|
765
|
+
width: number;
|
|
766
|
+
height: number;
|
|
767
|
+
length: number;
|
|
768
|
+
}
|
|
769
|
+
declare class Cuboid extends Object3D {
|
|
770
|
+
width: number;
|
|
771
|
+
height: number;
|
|
772
|
+
length: number;
|
|
773
|
+
constructor(options?: Partial<CuboidOptions>);
|
|
774
|
+
private computeVertices;
|
|
775
|
+
setWidth(width: number): void;
|
|
776
|
+
setHeight(height: number): void;
|
|
777
|
+
setLength(length: number): void;
|
|
778
|
+
}
|
|
779
|
+
|
|
706
780
|
type Mat2<T = number> = [
|
|
707
781
|
[
|
|
708
782
|
T,
|
|
@@ -759,7 +833,9 @@ type Mat4<T = number> = [
|
|
|
759
833
|
|
|
760
834
|
declare const TScratch: {
|
|
761
835
|
Engine: typeof Engine;
|
|
836
|
+
Camera: typeof Camera;
|
|
762
837
|
Sprite: typeof Sprite;
|
|
838
|
+
TSCMath: typeof TSCMath;
|
|
763
839
|
Multiplayer: typeof Multiplayer;
|
|
764
840
|
Rectangle: typeof Rectangle;
|
|
765
841
|
Square: typeof Square;
|
|
@@ -774,7 +850,10 @@ declare const TScratch: {
|
|
|
774
850
|
Watermark: typeof Watermark;
|
|
775
851
|
ImageSprite: typeof ImageSprite;
|
|
776
852
|
RigidCircle: typeof RigidCircle;
|
|
853
|
+
Camera3D: typeof Camera3D;
|
|
854
|
+
Renderer3D: typeof Renderer3D;
|
|
777
855
|
WireframeRenderer3D: typeof WireframeRenderer3D;
|
|
856
|
+
SolidRenderer3D: typeof SolidRenderer3D;
|
|
778
857
|
Object3D: typeof Object3D;
|
|
779
858
|
Tetrahedron: typeof Tetrahedron;
|
|
780
859
|
Cube: typeof Cube;
|
|
@@ -782,6 +861,7 @@ declare const TScratch: {
|
|
|
782
861
|
Icosahedron: typeof Icosahedron;
|
|
783
862
|
Icosphere: typeof Icosphere;
|
|
784
863
|
Monkey: typeof Monkey;
|
|
864
|
+
Cuboid: typeof Cuboid;
|
|
785
865
|
scale: number;
|
|
786
866
|
aspectRatio: number;
|
|
787
867
|
setScale: typeof setScale;
|
|
@@ -790,4 +870,4 @@ declare const TScratch: {
|
|
|
790
870
|
ctx: CanvasRenderingContext2D;
|
|
791
871
|
};
|
|
792
872
|
|
|
793
|
-
export { Arc, type ArcOptions, Button, type ButtonOptions, Circle, type CircleOptions, Cube, 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, Sprite, type SpriteOptions, Square, type SquareOptions, Tetrahedron, Text, type TextOptions, type Vec2, type Vec3, type Vec4, Watermark, type TextOptions as WatermarkOptions, WireframeRenderer3D,
|
|
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 };
|