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