5. Animated Lights - Status-Lichter mit Animation
Übersicht

Mit Animated Lights kannst du Lichter hinzufügen, die automatisch basierend auf dem Produktionsstatus leuchten und optional blinken.
💡 Beispiel: Grünes Licht blinkt wenn Produktion läuft, rotes Licht leuchtet bei fehlenden Inputs.
Key Features:
- ✅ Automatische Status-Anzeige durch Lichter
- ✅ 5 vorkonfigurierte Lampen (Weiß, Gelb, Rot, Grün, Blau)
- ✅ Blink-Funktionen (langsam, schnell, custom pattern)
- ✅ Eigene Licht-i3d Dateien verwendbar
- ✅ Mehrere Lichter pro Status möglich
Produktionsstatus
Die Lichter reagieren auf diese 4 Produktionsstatus:
| Status | Bedeutung |
|---|---|
INACTIVE | Produktion ist gestoppt |
RUNNING | Produktion läuft |
MISSING_INPUTS | Inputs fehlen |
NO_OUTPUT_SPACE | Kein Platz für Outputs |
XML-Konfiguration
Basis-Struktur
<placeable>
<productionExtension>
<productions>
<production id="muehle" name="Mühle">
<inputs>
<input fillType="WHEAT" amount="1000"/>
</inputs>
<outputs>
<output fillType="FLOUR" amount="800"/>
</outputs>
<!-- Status Animations -->
<statusAnimations>
<statusAnimation status="RUNNING">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
intensity="1.0"
blinkPattern="slow"/>
</statusAnimation>
</statusAnimations>
</production>
</productions>
</productionExtension>
</placeable>
<statusAnimations> kommt innerhalb der <production>!
Parameter
| Parameter | Typ | Beschreibung | Pflicht | Standard |
|---|---|---|---|---|
class | string | Muss "LightAnimation" sein | ✅ | - |
node | node | Transform-Node für das Licht | ✅ | - |
filename | string | Pfad zur Licht-i3d Datei | ✅ | - |
intensity | float | Lichtintensität (0.0 - 1.0) | ❌ | 1.0 |
blinkPattern | string | Blink-Muster (siehe unten) | ❌ | "none" |
blinkInterval | int | Blink-Intervall in ms | ❌ | 500 |
Vorkonfigurierte Lampen
Der Mod enthält 5 fertige Lampen die du direkt nutzen kannst:
| Farbe | Dateiname | Empfohlene Verwendung |
|---|---|---|
| 🟢 Grün | $moddir$/lights/green_light.i3d | RUNNING (Produktion läuft) |
| 🔴 Rot | $moddir$/lights/red_light.i3d | MISSING_INPUTS (Fehler) |
| 🟡 Gelb | $moddir$/lights/yellow_light.i3d | INACTIVE (Gestoppt) |
| 🔵 Blau | $moddir$/lights/blue_light.i3d | NO_OUTPUT_SPACE (Warnung) |
| ⚪ Weiß | $moddir$/lights/white_light.i3d | Allgemein |
$moddir$ wird automatisch durch den Mod-Pfad ersetzt - du musst nichts ändern!
Blink-Pattern
Vordefinierte Patterns
| Pattern | Beschreibung | Intervall | An/Aus |
|---|---|---|---|
"none" | Dauerlicht (kein Blinken) | - | Immer an |
"slow" | Langsames Blinken | 1000ms | 1 Sekunde an, 1 Sekunde aus |
"fast" | Schnelles Blinken | 250ms | 0.25s an, 0.25s aus |
Beispiele:
<!-- Dauerlicht -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
blinkPattern="none"/>
<!-- Langsam blinkend -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
blinkPattern="slow"/>
<!-- Schnell blinkend -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/yellow_light.i3d"
blinkPattern="fast"/>
Custom Blink-Pattern
Du kannst eigene Blink-Muster erstellen mit Komma-getrennten Werten (1 = an, 0 = aus):
<!-- Kurz-Kurz-Lang Pattern (Morse "U") -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/blue_light.i3d"
blinkPattern="1,0,1,0,1,1,0,0"
blinkInterval="300"/>
<!-- Doppel-Blink -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
blinkPattern="1,0,1,0,0,0"
blinkInterval="200"/>
<!-- Puls (kurz an, lang aus) -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/white_light.i3d"
blinkPattern="1,0,0,0,0"
blinkInterval="500"/>
Pattern Erklärung:
"1,0,1,0"= An, Aus, An, Aus, ... (wiederholt sich)"1,1,0,0"= An, An, Aus, Aus, ... (länger an)"1,0,0,0"= An, Aus, Aus, Aus, ... (kurze Pulse)
Das Pattern wiederholt sich automatisch in einer Schleife!
Vollständige Beispiele
Beispiel 1: Einfaches Ampel-System
<statusAnimations>
<!-- Grün = Läuft -->
<statusAnimation status="RUNNING">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
intensity="1.0"
blinkPattern="none"/>
</statusAnimation>
<!-- Rot = Fehlende Inputs -->
<statusAnimation status="MISSING_INPUTS">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
intensity="1.0"
blinkPattern="none"/>
</statusAnimation>
<!-- Gelb = Inaktiv -->
<statusAnimation status="INACTIVE">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/yellow_light.i3d"
intensity="0.8"
blinkPattern="none"/>
</statusAnimation>
<!-- Blau = Output voll -->
<statusAnimation status="NO_OUTPUT_SPACE">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/blue_light.i3d"
intensity="1.0"
blinkPattern="none"/>
</statusAnimation>
</statusAnimations>
📷 Alle Lichter nutzen denselben Node - nur eins leuchtet je nach Status!
Beispiel 2: Warnlichter mit Blinken
<statusAnimations>
<!-- Läuft = Grün (langsam blinkend) -->
<statusAnimation status="RUNNING">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
intensity="1.0"
blinkPattern="slow"/>
</statusAnimation>
<!-- Fehler = Rot (schnell blinkend) -->
<statusAnimation status="MISSING_INPUTS">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
intensity="1.0"
blinkPattern="fast"/>
</statusAnimation>
<!-- Inaktiv = Gelb (Dauerlicht) -->
<statusAnimation status="INACTIVE">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/yellow_light.i3d"
intensity="0.6"
blinkPattern="none"/>
</statusAnimation>
</statusAnimations>
Beispiel 3: Mehrere Lichter pro Status
<statusAnimation status="RUNNING">
<!-- Licht Links -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
intensity="1.0"
blinkPattern="slow"/>
<!-- Licht Rechts -->
<animationNode
class="LightAnimation"
node="0>5|0|1"
filename="$moddir$/lights/green_light.i3d"
intensity="1.0"
blinkPattern="slow"/>
<!-- Licht Oben -->
<animationNode
class="LightAnimation"
node="0>5|0|2"
filename="$moddir$/lights/white_light.i3d"
intensity="0.8"
blinkPattern="none"/>
</statusAnimation>
📷 Mehrere Lichter können gleichzeitig für einen Status aktiv sein!
Beispiel 4: Custom Blink-Pattern
<statusAnimation status="MISSING_INPUTS">
<!-- Alarm-Pattern: Doppel-Blink -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
intensity="1.0"
blinkPattern="1,0,1,0,0,0"
blinkInterval="200"/>
</statusAnimation>
Ergebnis: Blink-Blink-Pause-Blink-Blink-Pause...
Intensity Parameter
Die Intensität steuert die Helligkeit des Lichts (0.0 - 1.0):
<!-- Sehr dunkel -->
<animationNode ... intensity="0.3"/>
<!-- Normal -->
<animationNode ... intensity="0.7"/>
<!-- Maximal hell -->
<animationNode ... intensity="1.0"/>
Verwende intensity="0.6" für subtile Hintergrundbeleuchtung!
i3d Setup
Node im Giants Editor erstellen
- Erstelle einen Transform Group Node
- Notiere den Node-Pfad (z.B.
0>5|0|0) - Verwende den Pfad im
nodeParameter
<animationNode
class="LightAnimation"
node="0>5|0|0" <!-- Dein Node-Pfad -->
filename="$moddir$/lights/green_light.i3d"/>
Der Node ist nur ein Befestigungspunkt - das Licht selbst kommt aus der i3d-Datei!
Eigene Licht-i3d Dateien
Du kannst auch eigene Licht-i3d Dateien verwenden:
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="myLights/customLamp.i3d"
intensity="1.0"/>
Anforderungen an die i3d-Datei:
- Muss ein valides i3d-Format sein
- Sollte Shapes mit
lightControlShader-Parameter enthalten - Oder Nodes mit
lightIds0Shader-Parameter
Häufige Fehler
❌ Licht wird nicht angezeigt
Problem: Licht erscheint nicht.
Ursache 1: Node existiert nicht
<!-- FALSCH - Node "0>5|0|99" existiert nicht im i3d -->
<animationNode ... node="0>5|0|99"/>
<!-- RICHTIG - Node existiert -->
<animationNode ... node="0>5|0|0"/>
Ursache 2: Falscher Dateipfad
<!-- FALSCH - Datei existiert nicht -->
<animationNode ... filename="lights/mylight.i3d"/>
<!-- RICHTIG - Vorkonfigurierte Lampe nutzen -->
<animationNode ... filename="$moddir$/lights/green_light.i3d"/>
❌ class Parameter vergessen
Problem: Licht funktioniert nicht.
<!-- FALSCH - class fehlt -->
<animationNode
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"/>
<!-- RICHTIG - class="LightAnimation" gesetzt -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"/>
class="LightAnimation" ist PFLICHT!
❌ Blinken funktioniert nicht
Problem: Licht blinkt nicht obwohl blinkPattern gesetzt ist.
<!-- FALSCH - blinkPattern="none" -->
<animationNode ... blinkPattern="none"/>
<!-- RICHTIG - blinkPattern="slow" oder "fast" -->
<animationNode ... blinkPattern="slow"/>
❌ Alle Lichter leuchten gleichzeitig
Problem: Alle Status-Lichter sind gleichzeitig an.
Ursache: Alle nutzen denselben Node
<!-- FALSCH - alle nutzen "0>5|0|0" -->
<statusAnimation status="RUNNING">
<animationNode ... node="0>5|0|0"/>
</statusAnimation>
<statusAnimation status="INACTIVE">
<animationNode ... node="0>5|0|0"/>
</statusAnimation>
<!-- RICHTIG - Status-Lichter können denselben Node nutzen! -->
<!-- Nur EIN Status ist aktiv = nur EIN Licht leuchtet -->
Bei Status-Lichtern ist es KORREKT, denselben Node zu nutzen - nur der aktive Status leuchtet!
Für mehrere gleichzeitig leuchtende Lichter:
<statusAnimation status="RUNNING">
<!-- Verschiedene Nodes für gleichzeitige Lichter -->
<animationNode ... node="0>5|0|0"/>
<animationNode ... node="0>5|0|1"/>
<animationNode ... node="0>5|0|2"/>
</statusAnimation>
Praktische Anwendungen
Produktions-Ampel
<statusAnimations>
<statusAnimation status="RUNNING">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
blinkPattern="slow"/>
</statusAnimation>
<statusAnimation status="MISSING_INPUTS">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
blinkPattern="fast"/>
</statusAnimation>
<statusAnimation status="INACTIVE">
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/yellow_light.i3d"
blinkPattern="none"/>
</statusAnimation>
</statusAnimations>
Warn-System mit Alarm
<statusAnimation status="MISSING_INPUTS">
<!-- Hauptlicht: Rot, schnell blinkend -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/red_light.i3d"
intensity="1.0"
blinkPattern="fast"/>
<!-- Zusatzlicht: Weiß, Doppel-Blink Pattern -->
<animationNode
class="LightAnimation"
node="0>5|0|1"
filename="$moddir$/lights/white_light.i3d"
intensity="0.8"
blinkPattern="1,0,1,0,0,0"
blinkInterval="300"/>
</statusAnimation>
Kombination mit anderen Features
Mit Beacon Lights
<statusAnimation status="RUNNING">
<!-- Status-Licht -->
<animationNode
class="LightAnimation"
node="0>5|0|0"
filename="$moddir$/lights/green_light.i3d"
blinkPattern="slow"/>
<!-- Beacon-Licht -->
<beaconLight
node="0>6|0|0"
filename="shared/beaconLights/beaconLight01.xml"
speed="1.5"/>
</statusAnimation>
Siehe auch: Beacon Lights - Animierte Rundumleuchten
Zusammenfassung
✅ Animated Lights zeigen automatisch Produktionsstatus durch Lichter an
✅ 5 vorkonfigurierte Farben verfügbar (Weiß, Gelb, Rot, Grün, Blau)
✅ 3 Blink-Modi: none (Dauerlicht), slow, fast
✅ Custom Blink-Pattern möglich (z.B. "1,0,1,0,0,0")
✅ Mehrere Lichter pro Status kombinierbar
✅ Einfache Integration mit class="LightAnimation"
Starte mit den vorkonfigurierten Lampen und blinkPattern="slow" - das funktioniert für die meisten Anwendungsfälle!