Pick an object of the same scene for an object variable #258

Closed
opened 2026-09-28 14:02:54 +02:00 by meleki · 1 comment
Owner

Eine Behavior-Variable vom Typ Object zeigt am platzierten Objekt heute fest (null). Man soll dort ein Objekt derselben Szene auswählen können.

Vereinbart (2026-09-28):

  • Gespeichert wird ein Verweis {"$object": "<objectId>"}; leer bleibt (null). Alte Projekte laden unverändert.
  • Inspector am platzierten Objekt: Dropdown mit None und allen Objekten derselben Szene (eingerückt wie die Hierarchy, das Objekt selbst inklusive).
  • Am Behavior-Asset bleibt (null) (ein Asset hat keine Szene).
  • Auch Object-Felder in Structs und Object-Items in Listen.
  • Im Spiel wird der Verweis zum echten Objekt; fehlt es oder ist es zerstört, ist der Wert null.
  • Ziel-Objekt löschen → Verweis fällt im selben Undo-Schritt weg.
  • Kopieren/Einfügen einer Gruppe: Verweise innerhalb der Gruppe zeigen auf die Kopien, Verweise nach außen bleiben.
  • Was ein Graph im Lauf hineinschreibt, landet nicht in Szene oder Savegame.
  • Container: ein Objekt im Container bekommt nur Objekte desselben Containers zur Auswahl.
  • Auswahl per Klick in der Szene (Pipette): später, fürs Erste reicht das Dropdown.
Eine Behavior-Variable vom Typ `Object` zeigt am platzierten Objekt heute fest `(null)`. Man soll dort ein Objekt derselben Szene auswählen können. **Vereinbart (2026-09-28):** - Gespeichert wird ein Verweis `{"$object": "<objectId>"}`; leer bleibt `(null)`. Alte Projekte laden unverändert. - Inspector am platzierten Objekt: Dropdown mit **None** und allen Objekten derselben Szene (eingerückt wie die Hierarchy, das Objekt selbst inklusive). - Am Behavior-Asset bleibt `(null)` (ein Asset hat keine Szene). - Auch Object-Felder in Structs und Object-Items in Listen. - Im Spiel wird der Verweis zum echten Objekt; fehlt es oder ist es zerstört, ist der Wert `null`. - Ziel-Objekt löschen → Verweis fällt im selben Undo-Schritt weg. - Kopieren/Einfügen einer Gruppe: Verweise innerhalb der Gruppe zeigen auf die Kopien, Verweise nach außen bleiben. - Was ein Graph im Lauf hineinschreibt, landet nicht in Szene oder Savegame. - Container: ein Objekt im Container bekommt nur Objekte desselben Containers zur Auswahl. - Auswahl per Klick in der Szene (Pipette): später, fürs Erste reicht das Dropdown.
Author
Owner

Done in f84defb, wiki in eadcc6c (Behaviors, Development).

  • A placed object shows a dropdown for an Object variable: None plus every object of the same scene, indented like the Hierarchy. Also for Object fields in structs and Object items in lists.
  • Stored as {"$object": "<id>"}, old projects load unchanged. The behavior asset keeps (null).
  • The running game resolves the reference on read. Destroyed target reads as null, a missing one shows (missing).
  • Inside a container only objects of the same container are offered, every placement finds its own copy.
  • Delete clears the reference (one undo step), paste points group-internal references at the copies, Create container and Unpack carry them along.
  • Found on the way: setting an override used to drop every object slot to empty. Fixed via objectPlace().

Not done: no eyedropper (dropdown only, as decided). Deleting a template object in the container editor does not clean up references in other scenes.

Tests: ./check.sh 2724 tests green, e2e 1-9/51/57 389 checks green, new e2e 57 with 5 checks, counter-checks fail as expected.

Done in f84defb, wiki in eadcc6c (*Behaviors*, *Development*). - A placed object shows a dropdown for an Object variable: None plus every object of the same scene, indented like the Hierarchy. Also for Object fields in structs and Object items in lists. - Stored as `{"$object": "<id>"}`, old projects load unchanged. The behavior asset keeps `(null)`. - The running game resolves the reference on read. Destroyed target reads as null, a missing one shows `(missing)`. - Inside a container only objects of the same container are offered, every placement finds its own copy. - Delete clears the reference (one undo step), paste points group-internal references at the copies, Create container and Unpack carry them along. - Found on the way: setting an override used to drop every object slot to empty. Fixed via `objectPlace()`. Not done: no eyedropper (dropdown only, as decided). Deleting a template object in the container editor does not clean up references in other scenes. Tests: `./check.sh` 2724 tests green, e2e 1-9/51/57 389 checks green, new e2e 57 with 5 checks, counter-checks fail as expected.
admin added this to the Development project 2026-09-28 21:22:16 +02:00
admin moved this to Done in Development on 2026-09-28 21:22:28 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#258