Unreferenced image files #11

Closed
opened 2026-09-12 15:03:51 +02:00 by admin · 0 comments

Zitat aus der readme: "Unreferenced image files are never collected."

Ich würde sagen dass soll vorerst auch so bleiben.

Was passt:
drag and drop file in den editor => textur wird hochgeladen und passende asset wird erstellt => das soll so bleiben, das passt

Was wir auch haben aber ändern:
klickt man auf das + => Texture, dann öffnet sich der File System Browser.

Anstelle des file system browser => ein dialog mit allen images die am server existieren.

  • auswählen => ok, dann wird es wiederverwendet => dialog schließt sich => texture asset mit ausgewählten image wird erstellt.
  • oder hochladen button => file system browser => OK => dialog schließt sich => texture asset mit hochgeladenen image wird erstellt (im prinzip das was wir jetzt auch haben)

Umgesetzt (2026-09-09). Der Weg ueber + → Texture oeffnet jetzt einen Bild-Dialog statt
des File-Browsers; Drag&Drop und Ctrl+V bleiben unveraendert, und gesammelt wird weiterhin nichts.

Der Dialog (src/editor/texture/ImagePicker.ts) zeigt jede Datei, die der Server haelt, als
Kachel mit Vorschaubild. Auswaehlen und Use image legt ein Texture-Asset auf diese Datei an —
ohne Upload, die Bytes liegen ja schon da. Upload… oeffnet den File-Browser und muendet in
genau denselben Import wie ein Drop. Doppelklick auf eine Kachel ist die Kurzform von Use image.

Kacheln, die das Projekt schon traegt, sind mit dem Asset-Namen beschriftet (statt mit der
Pixelgroesse); eine davon zu waehlen legt kein zweites Asset an, sondern selektiert das
vorhandene — zwei Assets auf einer Datei wuerden sich sonst ueber filter streiten.

Zwei Aenderungen, die dazu noetig waren:

  • GET ?r=textures liefert jetzt auch width/height (aus dem Datei-Header). Ein Texture-Asset
    haelt die Pixelgroesse, und der Dialog haette sie sonst nur ueber das geladene Vorschaubild
    gehabt — dann haenge die Richtigkeit des Assets am Ladezustand der GPU-Textur.
  • TextureLibrary.load(file) neben get(ref): laedt, ohne den scaleMode anzufassen. Ein
    Vorschaubild darf den Filter eines Bildes nicht umstellen, das die Szene gerade zeichnet.

Belegt (tools/e2e/12-textures.mjs, Block 19e): ein zweites Bild wird eingefuegt, das Asset
per Undo wieder entfernt — die Datei bleibt auf dem Server, das Projekt kennt sie nicht mehr.
Genau die taucht dann im Dialog auf, ist nicht als "im Projekt" markiert, und ueber Use image
entsteht daraus wieder ein Asset mit 24 × 24 aus dem Server-Datensatz. Zusaetzlich geprueft: der
Dialog zeigt exakt die Dateiliste von GET ?r=textures.


Übernommen aus todo-notes/done/unreferenced-image-files.md beim Umzug auf das Issue-System (2026-09-12).

  • Angelegt: 2026-09-09 · e9634f0 — Paint an asset's name gold while any of its values deviates
  • Abgeschlossen: 2026-09-09 · 88ec367 — Offer the pictures the server already holds when adding a texture
  • Gemeldet von: admin
Zitat aus der readme: "Unreferenced image files are never collected." Ich würde sagen dass soll vorerst auch so bleiben. Was passt: drag and drop file in den editor => textur wird hochgeladen und passende asset wird erstellt => das soll so bleiben, das passt Was wir auch haben aber ändern: klickt man auf das `+` => `Texture`, dann öffnet sich der File System Browser. Anstelle des file system browser => ein dialog mit allen images die am server existieren. - auswählen => ok, dann wird es wiederverwendet => dialog schließt sich => texture asset mit ausgewählten image wird erstellt. - oder hochladen button => file system browser => OK => dialog schließt sich => texture asset mit hochgeladenen image wird erstellt (im prinzip das was wir jetzt auch haben) --- **Umgesetzt (2026-09-09).** Der Weg ueber `+` → `Texture` oeffnet jetzt einen Bild-Dialog statt des File-Browsers; Drag&Drop und Ctrl+V bleiben unveraendert, und gesammelt wird weiterhin nichts. **Der Dialog** (`src/editor/texture/ImagePicker.ts`) zeigt jede Datei, die der Server haelt, als Kachel mit Vorschaubild. Auswaehlen und **Use image** legt ein Texture-Asset auf diese Datei an — ohne Upload, die Bytes liegen ja schon da. **Upload…** oeffnet den File-Browser und muendet in genau denselben Import wie ein Drop. Doppelklick auf eine Kachel ist die Kurzform von *Use image*. Kacheln, die das Projekt schon traegt, sind mit dem **Asset-Namen** beschriftet (statt mit der Pixelgroesse); eine davon zu waehlen legt kein zweites Asset an, sondern selektiert das vorhandene — zwei Assets auf einer Datei wuerden sich sonst ueber `filter` streiten. **Zwei Aenderungen, die dazu noetig waren:** - `GET ?r=textures` liefert jetzt auch `width`/`height` (aus dem Datei-Header). Ein Texture-Asset haelt die Pixelgroesse, und der Dialog haette sie sonst nur ueber das geladene Vorschaubild gehabt — dann haenge die Richtigkeit des Assets am Ladezustand der GPU-Textur. - `TextureLibrary.load(file)` neben `get(ref)`: laedt, **ohne** den `scaleMode` anzufassen. Ein Vorschaubild darf den Filter eines Bildes nicht umstellen, das die Szene gerade zeichnet. **Belegt** (`tools/e2e/12-textures.mjs`, Block 19e): ein zweites Bild wird eingefuegt, das Asset per Undo wieder entfernt — die Datei bleibt auf dem Server, das Projekt kennt sie nicht mehr. Genau die taucht dann im Dialog auf, ist *nicht* als "im Projekt" markiert, und ueber *Use image* entsteht daraus wieder ein Asset mit 24 × 24 aus dem Server-Datensatz. Zusaetzlich geprueft: der Dialog zeigt exakt die Dateiliste von `GET ?r=textures`. --- *Übernommen aus `todo-notes/done/unreferenced-image-files.md` beim Umzug auf das Issue-System (2026-09-12).* - **Angelegt:** 2026-09-09 · `e9634f0` — Paint an asset's name gold while any of its values deviates - **Abgeschlossen:** 2026-09-09 · `88ec367` — Offer the pictures the server already holds when adding a texture - **Gemeldet von:** admin
admin added the todo-note label 2026-09-12 15:03:51 +02:00
admin closed this issue 2026-09-12 15:03:51 +02:00
admin added this to the Development project 2026-09-13 13:43:25 +02:00
admin moved this to Done in Development on 2026-09-13 13:44:23 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#11