Zum Hauptinhalt springen

5. Animated Lights - Status-Lichter mit Animation

Übersicht

Status Lights Animation

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:

StatusBedeutung
INACTIVEProduktion ist gestoppt
RUNNINGProduktion läuft
MISSING_INPUTSInputs fehlen
NO_OUTPUT_SPACEKein 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>
WICHTIG

<statusAnimations> kommt innerhalb der <production>!

Parameter

ParameterTypBeschreibungPflichtStandard
classstringMuss "LightAnimation" sein-
nodenodeTransform-Node für das Licht-
filenamestringPfad zur Licht-i3d Datei-
intensityfloatLichtintensität (0.0 - 1.0)1.0
blinkPatternstringBlink-Muster (siehe unten)"none"
blinkIntervalintBlink-Intervall in ms500

Vorkonfigurierte Lampen

Der Mod enthält 5 fertige Lampen die du direkt nutzen kannst:

FarbeDateinameEmpfohlene Verwendung
🟢 Grün$moddir$/lights/green_light.i3dRUNNING (Produktion läuft)
🔴 Rot$moddir$/lights/red_light.i3dMISSING_INPUTS (Fehler)
🟡 Gelb$moddir$/lights/yellow_light.i3dINACTIVE (Gestoppt)
🔵 Blau$moddir$/lights/blue_light.i3dNO_OUTPUT_SPACE (Warnung)
Weiß$moddir$/lights/white_light.i3dAllgemein
TIPP

$moddir$ wird automatisch durch den Mod-Pfad ersetzt - du musst nichts ändern!

Vordefinierte Patterns

PatternBeschreibungIntervallAn/Aus
"none"Dauerlicht (kein Blinken)-Immer an
"slow"Langsames Blinken1000ms1 Sekunde an, 1 Sekunde aus
"fast"Schnelles Blinken250ms0.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"/>

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)
Hinweis

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!

<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"/>
TIPP

Verwende intensity="0.6" für subtile Hintergrundbeleuchtung!

i3d Setup

Node im Giants Editor erstellen

  1. Erstelle einen Transform Group Node
  2. Notiere den Node-Pfad (z.B. 0>5|0|0)
  3. Verwende den Pfad im node Parameter
<animationNode
class="LightAnimation"
node="0>5|0|0" <!-- Dein Node-Pfad -->
filename="$moddir$/lights/green_light.i3d"/>
Hinweis

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 lightControl Shader-Parameter enthalten
  • Oder Nodes mit lightIds0 Shader-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"/>
WICHTIG

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 -->
Hinweis

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>
Verwandte Features

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"

EMPFEHLUNG

Starte mit den vorkonfigurierten Lampen und blinkPattern="slow" - das funktioniert für die meisten Anwendungsfälle!