simulationjsv2 0.1.3 → 0.1.4
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/graphics.d.ts +1 -0
- package/dist/graphics.js +14 -11
- package/dist/simulation.js +6 -6
- package/package.json +1 -1
package/dist/graphics.d.ts
CHANGED
package/dist/graphics.js
CHANGED
|
@@ -180,6 +180,7 @@ export class Square extends SimulationElement {
|
|
|
180
180
|
height;
|
|
181
181
|
rotation;
|
|
182
182
|
vertexColors;
|
|
183
|
+
points;
|
|
183
184
|
/**
|
|
184
185
|
* @param vertexColors{Record<number, Color>} - 0 is top left vertex, numbers increase clockwise
|
|
185
186
|
*/
|
|
@@ -189,6 +190,12 @@ export class Square extends SimulationElement {
|
|
|
189
190
|
this.height = height * devicePixelRatio;
|
|
190
191
|
this.rotation = rotation || 0;
|
|
191
192
|
this.vertexColors = vertexColors || {};
|
|
193
|
+
this.points = [
|
|
194
|
+
vector2(this.width / 2, this.height / 2),
|
|
195
|
+
vector2(-this.width / 2, this.height / 2),
|
|
196
|
+
vector2(-this.width / 2, -this.height / 2),
|
|
197
|
+
vector2(this.width / 2, -this.height / 2)
|
|
198
|
+
];
|
|
192
199
|
}
|
|
193
200
|
scaleWidth(amount, t = 0, f) {
|
|
194
201
|
const finalWidth = this.width * amount;
|
|
@@ -271,24 +278,20 @@ export class Square extends SimulationElement {
|
|
|
271
278
|
}
|
|
272
279
|
getBuffer(camera, force) {
|
|
273
280
|
const resBuffer = [];
|
|
281
|
+
const vertexOrder = [0, 1, 2, 0, 2, 3];
|
|
274
282
|
if (this.vertexCache.shouldUpdate() || force) {
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
vector2(this.width / 2, -this.height / 2)
|
|
280
|
-
].map((vec) => {
|
|
281
|
-
const mat = mat4.identity();
|
|
282
|
-
mat4.rotateZ(mat, this.rotation, mat);
|
|
283
|
-
vec2.transformMat4(vec, mat, vec);
|
|
283
|
+
const rotationMat = mat4.identity();
|
|
284
|
+
mat4.rotateZ(rotationMat, this.rotation, rotationMat);
|
|
285
|
+
const points = this.points.map((vec) => {
|
|
286
|
+
vec2.transformMat4(vec, rotationMat, vec);
|
|
284
287
|
const pos = vector2();
|
|
285
288
|
vec2.clone(this.getPos(), pos);
|
|
286
289
|
pos[1] = camera.getScreenSize()[1] - pos[1];
|
|
287
|
-
|
|
290
|
+
pos[0] += this.width / 2;
|
|
291
|
+
pos[1] -= this.height / 2;
|
|
288
292
|
vec2.add(vec, pos, vec);
|
|
289
293
|
return vec;
|
|
290
294
|
});
|
|
291
|
-
const vertexOrder = [0, 1, 2, 0, 2, 3];
|
|
292
295
|
vertexOrder.forEach((vertex) => {
|
|
293
296
|
let vertexColor = this.vertexColors[vertex];
|
|
294
297
|
vertexColor = vertexColor ? vertexColor : this.getColor();
|
package/dist/simulation.js
CHANGED
|
@@ -281,7 +281,7 @@ export class Simulation {
|
|
|
281
281
|
// sub 10 to start with a reasonable gap between starting time and next frame time
|
|
282
282
|
let prev = Date.now() - 10;
|
|
283
283
|
let prevFps = 0;
|
|
284
|
-
const frame = () => {
|
|
284
|
+
const frame = async () => {
|
|
285
285
|
if (!this.running || !canvas)
|
|
286
286
|
return;
|
|
287
287
|
requestAnimationFrame(frame);
|
|
@@ -317,11 +317,11 @@ export class Simulation {
|
|
|
317
317
|
orthoMatrix.buffer, orthoMatrix.byteOffset, orthoMatrix.byteLength);
|
|
318
318
|
device.queue.writeBuffer(uniformBuffer, 4 * 16 + 4 * 16, // 4x4 matrix + 4x4 matrix
|
|
319
319
|
screenSize.buffer, screenSize.byteOffset, screenSize.byteLength);
|
|
320
|
-
|
|
321
|
-
this.scene.
|
|
322
|
-
const buffer =
|
|
323
|
-
|
|
324
|
-
}
|
|
320
|
+
let vertexArray = [];
|
|
321
|
+
for (let i = 0; i < this.scene.length; i++) {
|
|
322
|
+
const buffer = this.scene[i].getBuffer(this.camera, this.camera.hasUpdated());
|
|
323
|
+
vertexArray = vertexArray.concat(buffer);
|
|
324
|
+
}
|
|
325
325
|
this.camera.updateConsumed();
|
|
326
326
|
const vertexF32Array = new Float32Array(vertexArray);
|
|
327
327
|
const vertexBuffer = device.createBuffer({
|