4. SiloDisplay – 3D-Textanzeige
Übersicht
SiloDisplay rendert Informationen als 3D-Text direkt auf Nodes im Gebäudemodell – z. B. auf eine LED-Anzeige oder ein digitales Display. Unterstützt wird sowohl der extendedSilo (Bulk Silo) als auch der extendedPalletSilo.
Bulk Silo Display
Die Konfiguration liegt unter <silo><display>:
<silo>
<display font="DIGIT" size="0.06" color="1 1 1 1">
<!-- Feste Zeile für Box 1 -->
<displayLine boxIndex="1"
nameNode="displayName1"
fillTypeNode="displayFillType1"
levelNode="displayLevel1"
percentageNode="displayPct1"/>
<!-- Rotierende Zeile – zeigt alle Boxen der Reihe nach -->
<displayLine cycleBoxes="true"
cycleInterval="3000"
cyclePause="500"
nameNode="displayNameCycle"
levelNode="displayLevelCycle"/>
</display>
</silo>
Parameter <display>
| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
font | String | Font-Material-Name (aus g_materialManager) | DIGIT |
size | Float | Schriftgröße | 0.06 |
color | String | Textfarbe als r g b a (0–1) | 1 1 1 1 |
Parameter <displayLine> (Bulk Silo)
| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
boxIndex | Int | Zeigt Daten dieser Box (1-basiert). Entfällt bei cycleBoxes | – |
nameNode | Node | Node für den Box-Namen | – |
fillTypeNode | Node | Node für den FillType-Namen | – |
levelNode | Node | Node für den Füllstand (z. B. "12.500 l") | – |
percentageNode | Node | Node für Prozentwert (z. B. "62%") | – |
cycleBoxes | Bool | Alle Boxen automatisch der Reihe nach durchschalten | false |
cycleInterval | Int | Anzeigedauer pro Box in ms | 3000 |
cyclePause | Int | Pause zwischen zwei Boxen in ms | 500 |
Pallet Silo Display
Die Konfiguration liegt unter <extendedPalletSilo><display>:
<extendedPalletSilo>
<display font="DIGIT" size="0.06" color="1 1 1 1">
<!-- Fester Text (z. B. Bereichsbezeichnung) -->
<displayLine staticText="LAGER A"
staticTextNode="displayLabel"/>
<!-- Feste Zeile für Gruppe 1 (nach FillType sortiert) -->
<displayLine groupIndex="1"
fillTypeNode="displayFillType1"
countNode="displayCount1"
percentageNode="displayPct1"/>
<!-- Nur für ein bestimmtes Rack anzeigen -->
<displayLine regalId="regal_01"
regalNameNode="displayRegalName"
usedSlotsNode="displayUsed"
freeSlotsNode="displayFree"
fillTypeNode="displayFillType"
countNode="displayCount"/>
<!-- Rotierende Zeile über alle FillTypes -->
<displayLine cycleGroups="true"
cycleInterval="3000"
cyclePause="500"
fillTypeNode="displayFillTypeCycle"
countNode="displayCountCycle"/>
<!-- Nur bestimmte FillTypes anzeigen -->
<displayLine fillTypes="FLOUR SUGAR RICE"
cycleGroups="true"
fillTypeNode="displayFillTypeFilter"/>
</display>
</extendedPalletSilo>
Parameter <displayLine> (Pallet Silo)
Daten-Nodes
| Parameter | Typ | Beschreibung |
|---|---|---|
fillTypeNode | Node | FillType-Name der aktuellen Gruppe |
countNode | Node | Palettenanzahl (z. B. "12 Pallets") |
fillLevelNode | Node | Füllmenge in Litern |
percentageNode | Node | Lagerauslastung in % |
staticTextNode | Node | Node für festen Text aus staticText |
staticText | String | Fester Text der einmalig beim Laden gesetzt wird (immer Großbuchstaben) |
regalNameNode | Node | Zeigt den konfigurierten Namen des Racks (regalId erforderlich) |
usedSlotsNode | Node | Anzahl eingelagerter Paletten in diesem Rack (regalId erforderlich) |
freeSlotsNode | Node | Freie Slots in diesem Rack (regalId erforderlich) |
Filter & Steuerung
| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
groupIndex | Int | Zeigt Daten dieser FillType-Gruppe (1-basiert, alphabetisch sortiert) | – |
regalId | String | Filtert Daten auf dieses Rack (ID aus visualSlots) | – |
fillTypes | String | Whitelist von FillType-Namen, Leerzeichen getrennt (z. B. "FLOUR SUGAR") | – |
cycleGroups | Bool | Alle FillType-Gruppen automatisch durchschalten | false |
cycleInterval | Int | Anzeigedauer pro Gruppe in ms | 3000 |
cyclePause | Int | Pause zwischen zwei Gruppen in ms | 500 |
regalId + usedSlotsNode + freeSlotsNode + regalNameNode – zeigt alle rack-spezifischen Infos in einer Zeile.
staticText + staticTextNode – für feste Beschriftungen wie Rack-Nummern oder Bereichsnamen.
i3d Anforderungen
Die Text-Nodes müssen im Giants Editor als CharacterLine-kompatible Nodes eingerichtet sein (z. B. eine Plane mit Font-Shader). i3dMappings eintragen:
<i3dMappings>
<!-- Bulk Silo -->
<i3dMapping id="displayName1" node="0>9|0"/>
<i3dMapping id="displayFillType1" node="0>9|1"/>
<i3dMapping id="displayLevel1" node="0>9|2"/>
<i3dMapping id="displayPct1" node="0>9|3"/>
<!-- Pallet Silo -->
<i3dMapping id="displayLabel" node="0>10|0"/>
<i3dMapping id="displayRegalName" node="0>10|1"/>
<i3dMapping id="displayUsed" node="0>10|2"/>
<i3dMapping id="displayFree" node="0>10|3"/>
<i3dMapping id="displayFillType" node="0>10|4"/>
<i3dMapping id="displayCount" node="0>10|5"/>
</i3dMappings>
Die Update-Rate ist auf alle 2 Sekunden begrenzt und wird nur ausgeführt wenn sich der Spieler innerhalb von 25 Metern befindet. Statischer Text (staticText) wird einmalig beim Laden gesetzt und danach nicht mehr aktualisiert.