From 6c0c3dc26e427da63ce628f008ebbcb3e9684acf Mon Sep 17 00:00:00 2001 From: min Date: Sun, 7 Jun 2026 10:38:34 +0300 Subject: [PATCH] =?UTF-8?q?fix(studio):=20Ctrl+D=20=D0=B4=D1=83=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D1=80=D1=83=D0=B5=D1=82=20=D0=BE=D0=B1=D1=8A=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=20=D0=A0=D0=9E=D0=92=D0=9D=D0=9E=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=81=D1=82=D0=B5=20=D0=BE=D1=80=D0=B8=D0=B3=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D0=B0=20(=D0=BD=D0=B5=20=D1=81=D0=BC=D0=B5?= =?UTF-8?q?=D1=89=D0=B0=D0=B5=D1=82=20+1=20=D0=BF=D0=BE=20X)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit duplicateSelected для model/userModel/primitive ставил копию на sel.x+1 → визуальное смещение. Теперь копия появляется в той же точке (как Roblox Studio). Block остаётся с поиском свободной клетки (воксель нельзя в занятую). Co-Authored-By: Claude Opus 4.8 --- src/editor/engine/BabylonScene.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/editor/engine/BabylonScene.js b/src/editor/engine/BabylonScene.js index 6ace30e..7cbd532 100644 --- a/src/editor/engine/BabylonScene.js +++ b/src/editor/engine/BabylonScene.js @@ -5380,7 +5380,8 @@ export class BabylonScene { const sx = sel.x, sy = sel.y, sz = sel.z; const rotY = sel.rotationY || 0; const srcId = sel.instanceId; - this.modelManager.addInstance(typeId, sx + 1, sy, sz, rotY) + // Дубль появляется РОВНО на месте оригинала (как в Roblox Studio). + this.modelManager.addInstance(typeId, sx, sy, sz, rotY) .then(newId => { if (newId != null) { this._copyScriptsToNewObject('model', srcId, newId); @@ -5396,7 +5397,7 @@ export class BabylonScene { const sx = sel.x, sy = sel.y, sz = sel.z; const rotY = sel.rotationY || 0; const srcUmId = sel.instanceId; - this.userModelManager.addInstance(typeId, sx + 1, sy, sz, rotY, { + this.userModelManager.addInstance(typeId, sx, sy, sz, rotY, { currentUserId: this._currentUserId || null, }).then(newId => { if (newId != null) { @@ -5408,7 +5409,7 @@ export class BabylonScene { }); } else if (sel.type === 'primitive') { const newId = this.primitiveManager.addInstance(sel.primitiveType, { - x: sel.x + 1, y: sel.y, z: sel.z, + x: sel.x, y: sel.y, z: sel.z, sx: sel.sx, sy: sel.sy, sz: sel.sz, // Сохраняем вращение копии (без этого сбрасывалось, баг 2026-06-04). rotationX: sel.rotationX || 0,