New PRNG and physics fixes

This commit is contained in:
2024-06-11 17:50:32 +02:00
parent 99ed6d14f7
commit 958ffa9ae9
4 changed files with 118 additions and 41 deletions

View File

@@ -9,6 +9,7 @@ export default class Selector
static #selected: boolean = false;
static #previewMesh: Three.Box3Helper;
static #ghostMesh: Three.Box3Helper;
static #selectionMesh: Three.Box3Helper;
static get selected(): boolean
@@ -18,9 +19,11 @@ export default class Selector
static init(): void
{
Selector.#previewMesh = new Three.Box3Helper(new Three.Box3(), 0x2980B9);
Selector.#ghostMesh = new Three.Box3Helper(new Three.Box3(), 0xffffff);
Selector.#selectionMesh = new Three.Box3Helper(new Three.Box3(), 0xffffff);
Renderer.scene.add(Selector.#previewMesh);
Renderer.scene.add(Selector.#ghostMesh);
Renderer.scene.add(Selector.#selectionMesh);
Selector.hide();
@@ -34,20 +37,18 @@ export default class Selector
Selector.#previewMesh.visible = true;
}
static ghostSelect(asset: Asset): void
static ghost(asset: Asset): void
{
Selector.#assets = [asset];
Selector.hide();
if(!asset)
{
Selector.#ghostMesh.visible = false;
return;
Selector.#selected = false;
}
Selector.#selectionMesh.box.setFromArray([asset.x1, asset.y1, 0, asset.x2, asset.y2, 0]);
Selector.#previewMesh.updateMatrix();
Selector.#ghostMesh.box.setFromArray([asset.x1, asset.y1, 0, asset.x2, asset.y2, 0]);
Selector.#ghostMesh.updateMatrix();
Selector.#selectionMesh.visible = true;
Selector.#ghostMesh.visible = true;
}
static select(assets: Asset[]): void
{
@@ -67,13 +68,22 @@ export default class Selector
assets.map(e => e.y2).reduce((p, v) => Math.max(p, v), -Infinity),
0
]);
Selector.#previewMesh.updateMatrix();
Selector.#selectionMesh.updateMatrix();
Selector.#selectionMesh.visible = true;
}
static add(assets: Asset[]): void
static toggle(assets: Asset[]): void
{
Selector.select([...Selector.#assets, ...assets].filter((e, i, a) => a.indexOf(e) === i));
for(let i = 0; i < assets.length; i++)
{
const index = Selector.#assets.indexOf(assets[i]);
if(index === -1)
Selector.#assets.push(assets[i]);
else
Selector.#assets.splice(index, 1);
}
Selector.select(Selector.#assets);
}
static clear(): void
{
@@ -84,6 +94,7 @@ export default class Selector
static hide(): void
{
Selector.#previewMesh.visible = false;
Selector.#ghostMesh.visible = false;
Selector.#selectionMesh.visible = false;
}
}