fix(ecs): a component instance with a string name field is stored under that value
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 74/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- cpp, typescript
Rechercherichtung
Start with modules/ecs/wasm/Utils.cpp:34-43 and trace how get_js_class_name chooses a component key; check modules/ecs/src/shared/editor-world.ts:293, 300 for the editor tracker’s use of the same behavior. Reproduce with a component instance that has a string name field, then verify instances are stored under their class name and getZipper([Tag]) finds them.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Which package is this bug report for?
ecs
Issue description
get_js_class_name reads c.name before c.constructor.name. For an instance new Tag("player") whose class has a name field, the component array key is "player", not "Tag", and each distinct value creates its own array, so getZipper([Tag]) never finds it. Common Name / Tag components are silently stored in the wrong array. The editor tracker relies on the same behavior (editor-world.ts:293, 300).
Where:
Evidence:
return get_js_class_type_name(c).value_or(get_js_class_var_name(c).value_or(UNKNOWN_COMPONENT_TYPE));
...
const std::optional<emscripten::val> name = get_js_member(c, "name");
Suggested fix: Use .name only when c is a function (a class) or a plain { name } descriptor; for instances use constructor.name.
Found during a code audit of main at be72076.
Code sample
No response
Versions
- Engine
mainat be72076 - pnpm 12.0.0, Node.js 26, Bun 1.3.14
Issue priority
Medium (should be fixed soon)
I have tested this issue on a development release
be72076
- Vorherrschende Sprache
- TypeScript
- Sterne
- 7
- Forks
- 2
- Ø Merge
- 1 T. 17 Std.
- Gemergte PRs (30 T.)
- 17
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NanoForge-dev/Engine
-
dependencies enhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NanoForge-dev/Engine#513 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug chore tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
NanoForge-dev/Engine#511 ·
Maintainer antworten meist innerhalb von 1 Tag
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN serversOffendocumentation good first issue modules:network
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
NanoForge-dev/Engine#509 ·
Maintainer antworten meist innerhalb von 1 Tag
-
documentation modules:ecs packages:asset packages:core
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
NanoForge-dev/Engine#508 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug good first issue modules:music modules:sound
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NanoForge-dev/Engine#505 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in NanoForge-dev/Engine
Ähnliche Issues
-
Mend: dependency security vulnerability
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 65/100
fdm-monster/fdm-monster#5563 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 79/100
Maintainer antworten meist innerhalb von 1 Tag
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
growilabs/growi#12246 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededEvtl. vergeben @github-actions hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
SSWConsulting/SSW.Rules#2809 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag