simulationjsv2 0.6.0 → 0.7.1
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/TODO.md +9 -5
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/geometry.d.ts +11 -1
- package/dist/geometry.js +31 -0
- package/dist/graphics.d.ts +70 -19
- package/dist/graphics.js +274 -101
- package/dist/internalUtils.d.ts +9 -8
- package/dist/internalUtils.js +33 -44
- package/dist/settings.d.ts +7 -0
- package/dist/settings.js +9 -0
- package/dist/simulation.d.ts +30 -69
- package/dist/simulation.js +145 -261
- package/dist/types.d.ts +4 -0
- package/dist/utils.d.ts +8 -8
- package/dist/utils.js +13 -19
- package/package.json +1 -1
package/TODO.md
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
# TODO
|
|
2
2
|
|
|
3
|
-
- [ ]
|
|
3
|
+
- [ ] Fix transparency
|
|
4
|
+
- [x] Update `updateModelMatrix2d`
|
|
5
|
+
- [x] Trace line element (wireframe strip for tracing paths)
|
|
6
|
+
- [x] Test new transform things on 3d stuff
|
|
7
|
+
- [x] Fix rotating nested children elements
|
|
8
|
+
- [x] Fix instancing
|
|
9
|
+
- [x] Remove SceneCollection and replace by elements with children
|
|
10
|
+
- Test this
|
|
4
11
|
- [x] Change position/rotation to be matrix transform on gpu
|
|
5
12
|
- [x] Add update square center offset position in-place + not
|
|
6
13
|
- [x] Make getBuffer return cached Float32Array
|
|
7
14
|
- [x] Make input buffer position vec3 not vec4
|
|
8
15
|
- [x] Use line strip vertices for polygon buffers
|
|
9
16
|
- [x] Scene collection wireframe
|
|
10
|
-
|
|
11
|
-
## Not Yet
|
|
12
|
-
|
|
13
|
-
- [ ] Add rotateAround and rotateToAround methods to simulation element for absolute positioned vectors
|
|
17
|
+
- [ ] Add animation status handle to transition values
|
package/dist/constants.d.ts
CHANGED
|
@@ -9,3 +9,4 @@ export declare const modelProjMatOffset: number;
|
|
|
9
9
|
export declare const xAxis: import("./types.js").Vector3;
|
|
10
10
|
export declare const yAxis: import("./types.js").Vector3;
|
|
11
11
|
export declare const zAxis: import("./types.js").Vector3;
|
|
12
|
+
export declare const origin0: import("./types.js").Vector3;
|
package/dist/constants.js
CHANGED
package/dist/geometry.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VertexParamGeneratorInfo, CircleGeometryParams, CubeGeometryParams, EmptyParams, PolygonGeometryParams, Spline2dGeometryParams, SquareGeometryParams, Vector2, Vector3, VertexColorMap, LineGeometryParams } from './types.js';
|
|
1
|
+
import { VertexParamGeneratorInfo, CircleGeometryParams, CubeGeometryParams, EmptyParams, PolygonGeometryParams, Spline2dGeometryParams, SquareGeometryParams, Vector2, Vector3, VertexColorMap, LineGeometryParams, TraceLinesParams } from './types.js';
|
|
2
2
|
import { Color, Vertex } from './utils.js';
|
|
3
3
|
import { CubicBezierCurve2d, SplinePoint2d } from './graphics.js';
|
|
4
4
|
export declare abstract class Geometry<T extends EmptyParams> {
|
|
@@ -114,3 +114,13 @@ export declare class PolygonGeometry extends Geometry<PolygonGeometryParams> {
|
|
|
114
114
|
recompute(): void;
|
|
115
115
|
getTriangleBuffer(color: Color): number[];
|
|
116
116
|
}
|
|
117
|
+
export declare class TraceLines2dGeometry extends Geometry<EmptyParams> {
|
|
118
|
+
protected wireframeOrder: never[];
|
|
119
|
+
protected triangleOrder: never[];
|
|
120
|
+
protected params: TraceLinesParams;
|
|
121
|
+
constructor(maxLen?: number);
|
|
122
|
+
recompute(): void;
|
|
123
|
+
getWireframeBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo | undefined): number[];
|
|
124
|
+
getWireframeVertexCount(): number;
|
|
125
|
+
addVertex(vert: Vertex): void;
|
|
126
|
+
}
|
package/dist/geometry.js
CHANGED
|
@@ -475,3 +475,34 @@ export class PolygonGeometry extends Geometry {
|
|
|
475
475
|
.flat();
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
|
+
export class TraceLines2dGeometry extends Geometry {
|
|
479
|
+
wireframeOrder = [];
|
|
480
|
+
triangleOrder = [];
|
|
481
|
+
params;
|
|
482
|
+
constructor(maxLen) {
|
|
483
|
+
super([], 'strip');
|
|
484
|
+
this.params = {
|
|
485
|
+
vertices: [],
|
|
486
|
+
maxLength: maxLen || null
|
|
487
|
+
};
|
|
488
|
+
this.wireframeOrder = [];
|
|
489
|
+
}
|
|
490
|
+
recompute() { }
|
|
491
|
+
getWireframeBuffer(color, vertexParamGenerator) {
|
|
492
|
+
return this.params.vertices
|
|
493
|
+
.map((item) => {
|
|
494
|
+
const pos = item.getPos();
|
|
495
|
+
return bufferGenerator.generate(pos[0], pos[1], pos[2], item.getColor() || color, vector2(), vertexParamGenerator);
|
|
496
|
+
})
|
|
497
|
+
.flat();
|
|
498
|
+
}
|
|
499
|
+
getWireframeVertexCount() {
|
|
500
|
+
return this.params.vertices.length;
|
|
501
|
+
}
|
|
502
|
+
addVertex(vert) {
|
|
503
|
+
this.params.vertices.push(vert);
|
|
504
|
+
if (this.params.maxLength && this.params.vertices.length > this.params.maxLength) {
|
|
505
|
+
this.params.vertices.shift();
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
package/dist/graphics.d.ts
CHANGED
|
@@ -1,59 +1,87 @@
|
|
|
1
1
|
/// <reference types="@webgpu/types" />
|
|
2
|
-
import { Camera } from './simulation.js';
|
|
3
2
|
import type { Vector2, Vector3, LerpFunc, VertexColorMap, Mat4, AnySimulationElement, VertexParamGeneratorInfo } from './types.js';
|
|
4
3
|
import { Vertex, Color } from './utils.js';
|
|
5
|
-
import { BlankGeometry, CircleGeometry, CubeGeometry, Geometry, Line2dGeometry, Line3dGeometry, PlaneGeometry, PolygonGeometry, Spline2dGeometry, SquareGeometry } from './geometry.js';
|
|
6
|
-
import { VertexCache } from './internalUtils.js';
|
|
7
|
-
export declare abstract class
|
|
4
|
+
import { BlankGeometry, CircleGeometry, CubeGeometry, Geometry, Line2dGeometry, Line3dGeometry, PlaneGeometry, PolygonGeometry, Spline2dGeometry, SquareGeometry, TraceLines2dGeometry as TraceLinesGeometry } from './geometry.js';
|
|
5
|
+
import { SimSceneObjInfo, VertexCache } from './internalUtils.js';
|
|
6
|
+
export declare abstract class SimulationElement3d {
|
|
7
|
+
private children;
|
|
8
|
+
private uniformBuffer;
|
|
9
|
+
protected parent: SimulationElement3d | null;
|
|
10
|
+
protected centerOffset: Vector3;
|
|
11
|
+
protected rotationOffset: Vector3;
|
|
8
12
|
protected pos: Vector3;
|
|
9
|
-
protected abstract geometry: Geometry<
|
|
13
|
+
protected abstract geometry: Geometry<object>;
|
|
10
14
|
protected color: Color;
|
|
11
15
|
protected wireframe: boolean;
|
|
12
16
|
protected vertexCache: VertexCache;
|
|
13
17
|
protected rotation: Vector3;
|
|
14
18
|
protected modelMatrix: Mat4;
|
|
15
|
-
|
|
19
|
+
isInstance: boolean;
|
|
16
20
|
isInstanced: boolean;
|
|
21
|
+
is3d: boolean;
|
|
22
|
+
isEmpty: boolean;
|
|
17
23
|
/**
|
|
18
24
|
* @param pos - Expected to be adjusted to devicePixelRatio before reaching constructor
|
|
19
25
|
*/
|
|
20
26
|
constructor(pos: Vector3, rotation: Vector3, color?: Color);
|
|
21
|
-
|
|
27
|
+
add(el: SimulationElement3d, id?: string): void;
|
|
28
|
+
remove(el: SimulationElement3d): void;
|
|
29
|
+
getChildren(): SimulationElement3d[];
|
|
30
|
+
getChildrenInfos(): SimSceneObjInfo[];
|
|
31
|
+
hasChildren(): boolean;
|
|
32
|
+
setParent(parent: SimulationElement3d): void;
|
|
33
|
+
getParent(): SimulationElement3d | null;
|
|
34
|
+
setCenterOffset(offset: Vector3): void;
|
|
35
|
+
setRotationOffset(offset: Vector3): void;
|
|
36
|
+
resetCenterOffset(): void;
|
|
37
|
+
propagateDevice(device: GPUDevice): void;
|
|
38
|
+
getModelMatrix(): Mat4;
|
|
22
39
|
getUniformBuffer(device: GPUDevice, mat: Mat4): GPUBuffer;
|
|
40
|
+
protected mirrorParentTransforms3d(mat: Mat4): void;
|
|
23
41
|
protected updateModelMatrix3d(): void;
|
|
42
|
+
protected mirrorParentTransforms2d(mat: Mat4): void;
|
|
43
|
+
protected updateModelMatrix2d(): void;
|
|
24
44
|
getGeometryType(): "list" | "strip";
|
|
25
45
|
setWireframe(wireframe: boolean): void;
|
|
26
46
|
isWireframe(): boolean;
|
|
27
47
|
getColor(): Color;
|
|
28
48
|
getPos(): Vector3;
|
|
49
|
+
getAbsolutePos(): Vector3;
|
|
29
50
|
getRotation(): Vector3;
|
|
51
|
+
getCenterOffset(): Vector3;
|
|
30
52
|
fill(newColor: Color, t?: number, f?: LerpFunc): Promise<void>;
|
|
31
|
-
|
|
32
|
-
|
|
53
|
+
private moveChildren;
|
|
54
|
+
move(amount: Vector3, t?: number, f?: LerpFunc, fromDevicePixelRatio?: boolean): Promise<void>;
|
|
55
|
+
moveTo(pos: Vector3, t?: number, f?: LerpFunc, fromDevicePixelRatio?: boolean): Promise<void>;
|
|
56
|
+
rotateChildrenTo(angle: Vector3): void;
|
|
57
|
+
rotateChildren(angle: Vector3): void;
|
|
33
58
|
rotate(amount: Vector3, t?: number, f?: LerpFunc): Promise<void>;
|
|
34
59
|
rotateTo(rot: Vector3, t?: number, f?: LerpFunc): Promise<void>;
|
|
35
60
|
getVertexCount(): number;
|
|
36
|
-
protected defaultUpdateMatrix(_: Camera): void;
|
|
37
61
|
getBuffer(vertexParamGenerator?: VertexParamGeneratorInfo): Float32Array | number[];
|
|
62
|
+
protected abstract onDeviceChange(device: GPUDevice): void;
|
|
38
63
|
}
|
|
39
|
-
export declare
|
|
40
|
-
protected
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
constructor(
|
|
64
|
+
export declare class EmptyElement extends SimulationElement3d {
|
|
65
|
+
protected geometry: BlankGeometry;
|
|
66
|
+
private label;
|
|
67
|
+
isEmpty: boolean;
|
|
68
|
+
constructor(label?: string);
|
|
69
|
+
getLabel(): string | null;
|
|
70
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
44
71
|
}
|
|
45
|
-
export declare abstract class SimulationElement2d extends
|
|
72
|
+
export declare abstract class SimulationElement2d extends SimulationElement3d {
|
|
73
|
+
is3d: boolean;
|
|
46
74
|
constructor(pos: Vector2, rotation?: Vector3, color?: Color);
|
|
47
75
|
rotate2d(amount: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
48
76
|
rotateTo2d(rot: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
49
|
-
|
|
50
|
-
getModelMatrix(camera: Camera): Mat4;
|
|
77
|
+
getModelMatrix(): Mat4;
|
|
51
78
|
}
|
|
52
79
|
export declare class Plane extends SimulationElement3d {
|
|
53
80
|
protected geometry: PlaneGeometry;
|
|
54
81
|
points: Vertex[];
|
|
55
82
|
constructor(pos: Vector3, points: Vertex[], color?: Color, rotation?: Vector3);
|
|
56
83
|
setPoints(newPoints: Vertex[]): void;
|
|
84
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
57
85
|
}
|
|
58
86
|
export declare class Square extends SimulationElement2d {
|
|
59
87
|
protected geometry: SquareGeometry;
|
|
@@ -74,6 +102,7 @@ export declare class Square extends SimulationElement2d {
|
|
|
74
102
|
scale(amount: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
75
103
|
setWidth(num: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
76
104
|
setHeight(num: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
105
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
77
106
|
}
|
|
78
107
|
export declare class Circle extends SimulationElement2d {
|
|
79
108
|
protected geometry: CircleGeometry;
|
|
@@ -82,6 +111,7 @@ export declare class Circle extends SimulationElement2d {
|
|
|
82
111
|
constructor(pos: Vector2, radius: number, color?: Color, detail?: number);
|
|
83
112
|
setRadius(num: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
84
113
|
scale(amount: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
114
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
85
115
|
}
|
|
86
116
|
export declare class Polygon extends SimulationElement2d {
|
|
87
117
|
protected geometry: PolygonGeometry;
|
|
@@ -89,6 +119,7 @@ export declare class Polygon extends SimulationElement2d {
|
|
|
89
119
|
constructor(pos: Vector2, points: Vertex[], color?: Color, rotation?: number);
|
|
90
120
|
getVertices(): Vertex[];
|
|
91
121
|
setVertices(newVertices: Vertex[], t?: number, f?: LerpFunc): Promise<void>;
|
|
122
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
92
123
|
}
|
|
93
124
|
export declare class Line3d extends SimulationElement3d {
|
|
94
125
|
protected geometry: Line3dGeometry;
|
|
@@ -97,6 +128,7 @@ export declare class Line3d extends SimulationElement3d {
|
|
|
97
128
|
constructor(pos: Vertex, to: Vertex, thickness: number);
|
|
98
129
|
setStart(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
|
|
99
130
|
setEnd(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
|
|
131
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
100
132
|
}
|
|
101
133
|
export declare class Line2d extends SimulationElement2d {
|
|
102
134
|
protected geometry: Line2dGeometry;
|
|
@@ -105,6 +137,7 @@ export declare class Line2d extends SimulationElement2d {
|
|
|
105
137
|
constructor(from: Vertex, to: Vertex, thickness?: number);
|
|
106
138
|
setStart(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
|
|
107
139
|
setEnd(pos: Vector3, t?: number, f?: LerpFunc): Promise<void>;
|
|
140
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
108
141
|
}
|
|
109
142
|
export declare class Cube extends SimulationElement3d {
|
|
110
143
|
protected geometry: CubeGeometry;
|
|
@@ -116,6 +149,7 @@ export declare class Cube extends SimulationElement3d {
|
|
|
116
149
|
setHeight(height: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
117
150
|
setDepth(depth: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
118
151
|
scale(amount: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
152
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
119
153
|
}
|
|
120
154
|
export declare class BezierCurve2d {
|
|
121
155
|
private points;
|
|
@@ -168,14 +202,15 @@ export declare class Spline2d extends SimulationElement2d {
|
|
|
168
202
|
setThickness(thickness: number, t?: number, f?: LerpFunc): Promise<void>;
|
|
169
203
|
interpolateSlope(t: number): Vector2[] | readonly [Vector2, Vector2];
|
|
170
204
|
interpolate(t: number): Vector2;
|
|
205
|
+
protected onDeviceChange(_device: GPUDevice): void;
|
|
171
206
|
}
|
|
172
207
|
export declare class Instance<T extends AnySimulationElement> extends SimulationElement3d {
|
|
173
208
|
protected geometry: BlankGeometry;
|
|
174
209
|
private obj;
|
|
175
210
|
private instanceMatrix;
|
|
176
211
|
private matrixBuffer;
|
|
177
|
-
private device;
|
|
178
212
|
private baseMat;
|
|
213
|
+
isInstance: boolean;
|
|
179
214
|
constructor(obj: T, numInstances: number);
|
|
180
215
|
setNumInstances(numInstances: number): void;
|
|
181
216
|
setInstance(instance: number, transformation: Mat4): void;
|
|
@@ -186,4 +221,20 @@ export declare class Instance<T extends AnySimulationElement> extends Simulation
|
|
|
186
221
|
getVertexCount(): number;
|
|
187
222
|
getGeometryType(): "list" | "strip";
|
|
188
223
|
getBuffer(): Float32Array | number[];
|
|
224
|
+
protected onDeviceChange(device: GPUDevice): void;
|
|
225
|
+
getModelMatrix(): Mat4;
|
|
226
|
+
}
|
|
227
|
+
export declare class TraceLines2d extends SimulationElement2d {
|
|
228
|
+
protected geometry: TraceLinesGeometry;
|
|
229
|
+
constructor(color?: Color, maxLen?: number);
|
|
230
|
+
addPoint(point: Vector2 | Vector3, color?: Color): void;
|
|
231
|
+
isWireframe(): boolean;
|
|
232
|
+
protected onDeviceChange(_: GPUDevice): void;
|
|
233
|
+
}
|
|
234
|
+
export declare class TraceLines3d extends SimulationElement3d {
|
|
235
|
+
protected geometry: TraceLinesGeometry;
|
|
236
|
+
constructor(color?: Color, maxLen?: number);
|
|
237
|
+
addPoint(point: Vector2 | Vector3, color?: Color): void;
|
|
238
|
+
isWireframe(): boolean;
|
|
239
|
+
protected onDeviceChange(_: GPUDevice): void;
|
|
189
240
|
}
|