From 12efef7ff5b780a5b3b18d4d3bf2c0e688cfc573 Mon Sep 17 00:00:00 2001 From: min Date: Tue, 9 Jun 2026 19:56:06 +0300 Subject: [PATCH] =?UTF-8?q?debug(g15):=20=D0=BB=D0=BE=D0=B3=D0=B8=20=D0=B2?= =?UTF-8?q?=20shim=20fireTargetEvent=20+=20click=20=E2=80=94=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B9=D1=82=D0=B8=20=D0=B3=D0=B4=D0=B5=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/editor/engine/lua/RobloxShim.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/editor/engine/lua/RobloxShim.js b/src/editor/engine/lua/RobloxShim.js index 71d7f6a..d90a0ea 100644 --- a/src/editor/engine/lua/RobloxShim.js +++ b/src/editor/engine/lua/RobloxShim.js @@ -2173,6 +2173,10 @@ export function registerRobloxShim(lua, opts) { if (!p) return; const id = p.primId ?? p.target; const part = partById.get(Number(id)); + if (p.kind === 'click') { + // eslint-disable-next-line no-console + console.warn('[shim fireTargetEvent click] primId=', id, 'part=', !!part); + } if (!part) return; if (p.kind === 'touch' || p.kind === 'touched') { part.Touched.Fire(hrp); @@ -2180,13 +2184,16 @@ export function registerRobloxShim(lua, opts) { part.TouchEnded.Fire(hrp); } else if (p.kind === 'click') { // ClickDetector создаётся лениво — стрельба по 3D-объектам. - // Юзер делает: part.ClickDetector = Instance.new('ClickDetector', part) - // + clickDet.MouseClick:Connect(fn). Здесь фейерим сигнал. + // Фейерим без аргумента (передача объектов в Lua через wasmoon + // может крашить с null.then). try { const cd = part._clickDetector; - if (cd && cd.MouseClick) cd.MouseClick.Fire(localPlayer); - } catch (_) {} - // Также фейерим Part.Clicked если есть (наш расширенный API). + // eslint-disable-next-line no-console + console.warn('[shim click]', 'partId=', id, 'cd=', !!cd, 'sig=', !!cd?.MouseClick, 'conns=', cd?.MouseClick?.connections?.length); + if (cd && cd.MouseClick) cd.MouseClick.Fire(); + } catch (e) { + console.warn('[shim click err]', e?.message || e); + } try { if (part.Clicked) part.Clicked.Fire(); } catch (_) {}