simulationjsv2 0.2.3 → 0.2.5

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,106 +1,122 @@
1
1
  import { Camera } from './simulation.js';
2
- import type { Vector2, Vector3, LerpFunc, VertexColorMap } from './types.js';
2
+ import type { Vector2, Vector3, LerpFunc, VertexColorMap, ElementRotation } from './types.js';
3
3
  import { Vertex, VertexCache, Color } from './utils.js';
4
+ import { CircleGeometry, CubeGeometry, Geometry, Line2dGeometry, Line3dGeometry, PlaneGeometry, PolygonGeometry, SplineGeometry, SquareGeometry } from './geometry.js';
4
5
  export declare abstract class SimulationElement<T extends Vector2 | Vector3 = Vector3> {
5
- private pos;
6
- private color;
7
- camera: Camera | null;
8
- vertexCache: VertexCache;
9
- constructor(pos: T, color?: Color);
10
- setPos(pos: T): void;
6
+ protected abstract pos: T;
7
+ protected abstract geometry: Geometry;
8
+ protected color: Color;
9
+ protected wireframe: boolean;
10
+ protected vertexCache: VertexCache;
11
+ protected rotation: ElementRotation<T>;
12
+ is3d: boolean;
13
+ /**
14
+ * @param pos - Expected to be adjusted to devicePixelRatio before reaching constructor
15
+ */
16
+ constructor(color: Color | undefined, rotation: ElementRotation<T>, is3d?: boolean);
17
+ getGeometryType(): "list" | "strip";
18
+ setWireframe(wireframe: boolean): void;
19
+ isWireframe(): boolean;
20
+ getColor(): Color;
11
21
  getPos(): T;
12
- setCamera(camera: Camera): void;
13
22
  fill(newColor: Color, t?: number, f?: LerpFunc): Promise<void>;
14
- getColor(): Color;
15
- move(amount: T, t?: number, f?: LerpFunc): Promise<void>;
16
- moveTo(pos: T, t?: number, f?: LerpFunc): Promise<void>;
17
- abstract getBuffer(camera: Camera, force: boolean): number[];
23
+ abstract move(amount: T, t?: number, f?: LerpFunc): Promise<void>;
24
+ abstract moveTo(pos: T, t?: number, f?: LerpFunc): Promise<void>;
25
+ abstract rotate(amount: ElementRotation<T>, t?: number, f?: LerpFunc): Promise<void>;
26
+ abstract rotateTo(rotation: ElementRotation<T>, t?: number, f?: LerpFunc): Promise<void>;
27
+ protected abstract updateMatrix(camera: Camera): void;
28
+ protected defaultUpdateMatrix(camera: Camera): void;
29
+ getBuffer(camera: Camera): number[];
18
30
  }
19
- export declare class Plane extends SimulationElement {
20
- private points;
21
- private rotation;
31
+ export declare abstract class SimulationElement3d extends SimulationElement {
32
+ protected pos: Vector3;
33
+ rotation: Vector3;
34
+ constructor(pos: Vector3, rotation?: Vector3, color?: Color);
35
+ rotate(amount: Vector3, t?: number, f?: LerpFunc): Promise<void>;
36
+ rotateTo(rot: Vector3, t?: number, f?: LerpFunc): Promise<void>;
37
+ move(amount: Vector3, t?: number, f?: LerpFunc): Promise<void>;
38
+ moveTo(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
39
+ }
40
+ export declare abstract class SimulationElement2d extends SimulationElement<Vector2> {
41
+ protected pos: Vector2;
42
+ rotation: number;
43
+ constructor(pos: Vector2, rotation?: number, color?: Color);
44
+ rotate(rotation: number, t?: number, f?: LerpFunc): Promise<void>;
45
+ rotateTo(newRotation: number, t?: number, f?: LerpFunc): Promise<void>;
46
+ move(amount: Vector2, t?: number, f?: LerpFunc): Promise<void>;
47
+ moveTo(pos: Vector2, t?: number, f?: LerpFunc): Promise<void>;
48
+ }
49
+ export declare class Plane extends SimulationElement3d {
50
+ protected geometry: PlaneGeometry;
51
+ points: Vertex[];
22
52
  constructor(pos: Vector3, points: Vertex[], color?: Color, rotation?: Vector3);
23
53
  setPoints(newPoints: Vertex[]): void;
24
- rotate(amount: Vector3, t?: number, f?: LerpFunc): Promise<void>;
25
- rotateTo(angle: Vector3, t?: number, f?: LerpFunc): Promise<void>;
26
- getBuffer(_: Camera, force: boolean): number[];
54
+ protected updateMatrix(camera: Camera): void;
27
55
  }
28
- export declare class Square extends SimulationElement<Vector2> {
56
+ export declare class Square extends SimulationElement2d {
57
+ protected geometry: SquareGeometry;
29
58
  private width;
30
59
  private height;
31
- private rotation;
32
60
  private vertexColors;
33
- private points;
34
61
  /**
35
62
  * @param vertexColors{Record<number, Color>} - 0 is top left vertex, numbers increase clockwise
36
63
  */
37
64
  constructor(pos: Vector2, width: number, height: number, color?: Color, rotation?: number, vertexColors?: VertexColorMap);
65
+ private cloneColorMap;
66
+ setVertexColors(newColorMap: VertexColorMap, t?: number, f?: LerpFunc): Promise<void>;
38
67
  scaleWidth(amount: number, t?: number, f?: LerpFunc): Promise<void>;
39
68
  scaleHeight(amount: number, t?: number, f?: LerpFunc): Promise<void>;
40
69
  scale(amount: number, t?: number, f?: LerpFunc): Promise<void>;
41
70
  setWidth(num: number, t?: number, f?: LerpFunc): Promise<void>;
42
71
  setHeight(num: number, t?: number, f?: LerpFunc): Promise<void>;
43
- rotate(rotation: number, t?: number, f?: LerpFunc): Promise<void>;
44
- setRotation(newRotation: number, t?: number, f?: LerpFunc): Promise<void>;
45
- getBuffer(camera: Camera, force: boolean): number[];
72
+ protected updateMatrix(camera: Camera): void;
46
73
  }
47
- export declare class Circle extends SimulationElement<Vector2> {
74
+ export declare class Circle extends SimulationElement2d {
75
+ protected geometry: CircleGeometry;
48
76
  private radius;
49
77
  private detail;
50
78
  constructor(pos: Vector2, radius: number, color?: Color, detail?: number);
51
79
  setRadius(num: number, t?: number, f?: LerpFunc): Promise<void>;
52
80
  scale(amount: number, t?: number, f?: LerpFunc): Promise<void>;
53
- getBuffer(camera: Camera, force: boolean): number[];
81
+ protected updateMatrix(camera: Camera): void;
54
82
  }
55
- export declare class Polygon extends SimulationElement<Vector2> {
83
+ export declare class Polygon extends SimulationElement2d {
84
+ protected geometry: PolygonGeometry;
56
85
  private vertices;
57
- private rotation;
58
- constructor(pos: Vector2, vertices: Vertex[], color?: Color);
59
- rotate(amount: number, t?: number, f?: LerpFunc): Promise<void>;
60
- rotateTo(num: number, t?: number, f?: LerpFunc): Promise<void>;
86
+ constructor(pos: Vector2, points: Vertex[], color?: Color, rotation?: number);
61
87
  getVertices(): Vertex[];
62
88
  setVertices(newVertices: Vertex[], t?: number, f?: LerpFunc): Promise<void>;
63
- getBuffer(camera: Camera, force: boolean): number[];
89
+ protected updateMatrix(camera: Camera): void;
64
90
  }
65
- export declare class Line3d extends SimulationElement {
91
+ export declare class Line3d extends SimulationElement3d {
92
+ protected geometry: Line3dGeometry;
66
93
  private to;
67
- private toColor;
68
94
  private thickness;
69
95
  constructor(pos: Vertex, to: Vertex, thickness: number);
70
96
  setStart(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
71
97
  setEnd(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
72
- getBuffer(_: Camera, force: boolean): number[];
98
+ protected updateMatrix(camera: Camera): void;
73
99
  }
74
- export declare class Line2d extends SimulationElement {
100
+ export declare class Line2d extends SimulationElement2d {
101
+ protected geometry: Line2dGeometry;
75
102
  private to;
76
- private toColor;
77
103
  private thickness;
78
104
  constructor(from: Vertex, to: Vertex, thickness?: number);
79
- setEndColor(newColor: Color, t?: number, f?: LerpFunc): Promise<void>;
80
105
  setStart(pos: Vector2, t?: number, f?: LerpFunc): Promise<void>;
81
106
  setEnd(pos: Vector2, t?: number, f?: LerpFunc): Promise<void>;
82
- getBuffer(camera: Camera, force: boolean): number[];
107
+ protected updateMatrix(camera: Camera): void;
83
108
  }
84
- export declare class Cube extends SimulationElement {
85
- private vertices;
86
- private rotation;
109
+ export declare class Cube extends SimulationElement3d {
110
+ protected geometry: CubeGeometry;
87
111
  private width;
88
112
  private height;
89
113
  private depth;
90
- private wireframe;
91
- private wireframeLines;
92
- private static readonly wireframeOrder;
93
114
  constructor(pos: Vector3, width: number, height: number, depth: number, color?: Color, rotation?: Vector3);
94
- private computeVertices;
95
- private shiftWireframeLines;
96
- setWireframe(wireframe: boolean): void;
97
- rotate(amount: Vector3, t?: number, f?: LerpFunc): Promise<void>;
98
- setRotation(rot: Vector3, t?: number, f?: LerpFunc): Promise<void>;
99
115
  setWidth(width: number, t?: number, f?: LerpFunc): Promise<void>;
100
116
  setHeight(height: number, t?: number, f?: LerpFunc): Promise<void>;
101
117
  setDepth(depth: number, t?: number, f?: LerpFunc): Promise<void>;
102
118
  scale(amount: number, t?: number, f?: LerpFunc): Promise<void>;
103
- getBuffer(camera: Camera, force: boolean): number[];
119
+ protected updateMatrix(camera: Camera): void;
104
120
  }
105
121
  export declare class BezierCurve2d {
106
122
  private points;
@@ -133,17 +149,17 @@ export declare class SplinePoint2d {
133
149
  getColors(prevColor?: Color | null): (Color | null)[];
134
150
  getVectorArray(prevEnd: Vector2 | null, prevControl: Vector2 | null): readonly [Vector2, Vector2, Vector2, Vector2];
135
151
  }
136
- export declare class Spline2d extends SimulationElement {
152
+ export declare class Spline2d extends SimulationElement2d {
153
+ protected geometry: SplineGeometry;
137
154
  private curves;
138
155
  private thickness;
139
156
  private detail;
140
157
  private interpolateStart;
141
158
  private interpolateLimit;
142
- private distance;
143
159
  constructor(pos: Vertex, points: SplinePoint2d[], thickness?: number, detail?: number);
144
160
  setInterpolateStart(start: number, t?: number, f?: LerpFunc): Promise<void>;
145
161
  setInterpolateLimit(limit: number, t?: number, f?: LerpFunc): Promise<void>;
146
162
  interpolateSlope(t: number): readonly [Vector2, Vector2];
147
163
  interpolate(t: number): Vector2;
148
- getBuffer(camera: Camera, force: boolean): number[];
164
+ protected updateMatrix(camera: Camera): void;
149
165
  }