Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot]
2026-05-12 12:07:24 +00:00
parent cf0baff318
commit 70cf2d88cf
+44
View File
@@ -106,6 +106,50 @@ function buildSteps(): Step[] {
return location.protocol;
},
},
{
name: 'reparent preserva world-transform (Object3D.attach)',
run: async () => {
const scene = new THREE.Scene();
const parent = new THREE.Group();
parent.position.set(1, 2, 3);
parent.rotation.set(0, Math.PI / 4, 0);
scene.add(parent);
const child = new THREE.Group();
child.position.set(0.5, 0, 0);
parent.add(child);
scene.updateMatrixWorld(true);
const beforeWorld = child.matrixWorld.clone();
scene.attach(child);
scene.updateMatrixWorld(true);
const afterWorld = child.matrixWorld.clone();
for (let i = 0; i < 16; i++) {
if (Math.abs(beforeWorld.elements[i] - afterWorld.elements[i]) > 1e-5) {
throw new Error(`world drift no índice ${i}`);
}
}
// re-attach back
parent.attach(child);
scene.updateMatrixWorld(true);
const restored = child.matrixWorld.clone();
for (let i = 0; i < 16; i++) {
if (Math.abs(beforeWorld.elements[i] - restored.elements[i]) > 1e-5) {
throw new Error(`world drift restore ${i}`);
}
}
return 'world preserved';
},
},
{
name: 'lock toggle persiste no store',
run: async () => {
store().setLocked(false);
if (store().isLocked) throw new Error('isLocked deveria ser false');
store().setLocked(true);
if (!store().isLocked) throw new Error('setLocked(true) falhou');
store().setLocked(false);
return 'ok';
},
},
];
}