luckyrobots/media/Cars/_library/DefaultLightControllers.xml
Goran Lazarevski 997b97a113 first commit
2025-03-12 11:55:10 +01:00

720 lines
29 KiB
XML

<LightControllers>
<!--
Instructions:
Instruction Psuedo code
mov d, p0 d = p0 move p0 to d
movc d, c d = c move c to d
frac d, p0 d = frac(p0) d is the fractional part of p0
sat d, p0 d = saturate(p0) d is p0 clamped from 0 to 1
add d, p0, p1 d = p0 + p1 d is p0 + p1
add d, p0, c d = p0 + c d is p0 + c
sub d, p0, p1 d = p0 - p1 d is p0 - p1
mul d, p0, p1 d = p0 * p1 d is p0 * p1
mulc d, p0, c d = p0 * c d is p0 * c
div d, p0, p1 d = p0 / p1 d is p0 divided by p1
mod d, p0, p1 d = p0 % p1 d is p0 modulo p1
min d, p0, p1 d = min(p0, p1) d is the smaller of p0 and p1
minc d, p0, c d = min(p0, c) d is the smaller of p0 and c
max d, p0, p1 d = max(p0, p1) d is the larger of p0 and p1
maxc d, p0, c d = max(p0, c) d is the larger of p0 and c
sg d, p0, p1 d = (p1 > p2) ? 1.0 : 0.0 if p0 is greater than p1 then d is 1.0 else d is 0.0
sgc d, p0, c d = (p1 > c) ? 1.0 : 0.0 if p0 is greater than c then d is 1.0 else d is 0.0
sl d, p0, p1 d = (p1 < p2) ? 1.0 : 0.0 if p0 is less than p1 then d is 1.0 else d is 0.0
slc d, p0, c d = (p1 < c) ? 1.0 : 0.0 if p0 is less than c then d is 1.0 else d is 0.0
madd d, p0, p1, p2 d = (p0 * p1) + p2 d is p0 multiplied by p1 then add p2
lerp d, p0, p1, p2 d = lerp(p0, p1, p2) d is the linear interpolation of p0 and p1 by ratio p2 (p2 must be in the range 0..1)
Registers: (all registers are float)
d - destination
p0, p1, p2 - parameter 0,1 and 2
c - constant
d, p0, p1 and p2 can be any of the following:
Input registers (values set by the car state)
"BrakeAmount" : Brake amount, [0.0 to 1.0]
"SteeringAmount" : Steering amount [-1.0 to 1.0] (left to right)
"Speed" : Speed in m/s.
"Brake" : on/off [0.0 or 1.0]
"Headlight" : on/off [0.0 or 1.0]
"Sidelight" : on/off [0.0 or 1.0]
"DayTimeRL" : on/off [0.0 or 1.0]
"Highbeam" : on/off [0.0 or 1.0]
"Fog" : on/off [0.0 or 1.0]
"Reverse" : on/off [0.0 or 1.0]
"Engine" : on/off [0.0 or 1.0]
"Hazard" : on/off [0.0 or 1.0]
"IndicatorL" : on/off [0.0 or 1.0]
"IndicatorR" : on/off [0.0 or 1.0]
Sequence Generator outputs
"seq0"
"seq1"
"seq2"
"seq3"
Temps (use to store temp values)
"t0"
"t1"
"t2"
"t3"
"t4"
"t5"
"t6"
"t7"
Output - The output register must be set with the final result of the contoller.
"Output"
Constant:
c constant is any float value.
Slew is the time in seconds it takes the light to change.
slew = 0.0 is instant, like an LED
slew = 0.1 take 0.1s to get to 95% brightness, like a filament bulb
-->
<Constant name="IndicatorOnTime" value="0.36" />
<Constant name="IndicatorOffTime" value="0.33" />
<Constant name="SeqIndT1" value="0.12" /><!-- SeqIndT1 + SeqIndT2 should = IndicatorOnTime -->
<Constant name="SeqIndT2" value="0.24" /><!-- SeqIndT1 + SeqIndT2 should = IndicatorOnTime -->
<Constant name="SeqBrakeT1" value="0.3" />
<Constant name="SeqBrakeT2" value="0.6" />
<!-- Offset_BrakeLightAmount -->
<LightController output="Offset_BrakeLightAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Brake" />
</Output>
</LightController>
<!-- Offset_ReverseLightAmount -->
<LightController output="Offset_ReverseLightAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Reverse" />
</Output>
</LightController>
<!-- Offset_DoorOpen -->
<!-- Offset_EngineStart -->
<LightController output="Offset_EngineStart" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Engine" />
</Output>
</LightController>
<!-- Offset_HeadlightAmount -->
<LightController output="Offset_HeadlightAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Headlight" />
</Output>
</LightController>
<!-- Offset_ShiftLightAmount -->
<!-- Offset_DayTimeRLAmount -->
<LightController output="Offset_DayTimeRLAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="DayTimeRL" />
</Output>
</LightController>
<!-- Offset_RemoteUnlock -->
<!-- Offset_HighBeamAmount -->
<LightController output="Offset_HighBeamAmount" slew="0.0">
<Output>
<Instruction op="mulc" d="t0" p0="Headlight" c="1.0" />
<Instruction op="mulc" d="t1" p0="Highbeam" c="2.0" />
<Instruction op="max" d="output" p0="t0" p1="t1" />
</Output>
</LightController>
<!-- Offset_FogLightAmount -->
<LightController output="Offset_FogLightAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Fog" />
</Output>
</LightController>
<!-- Offset_SequentialBrakeLight -->
<!-- Offset_RightTurnLightAmount -->
<LightController output="Offset_RightTurnLightAmount" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_LeftTurnLightAmount -->
<LightController output="Offset_LeftTurnLightAmount" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_HazardLightAmount -->
<LightController output="Offset_HazardLightAmount" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="output" p0="Hazard" p1="seq0" />
</Output>
</LightController>
<!-- Offset_OpenHood -->
<!-- Offset_OpenTrunk -->
<!-- Offset_RainDriving -->
<!-- Offset_Position1 -->
<!-- Offset_Position2 -->
<!-- Offset_Position3 -->
<!-- Offset_Differentiator -->
<!-- Offset_ElectroLuminescentLivery -->
<LightController output="Offset_ElectroLuminescentLivery" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Headlight" />
</Output>
</LightController>
<!-- Offset_ConvenienceLightAmount -->
<!-- Offset_TaillightAmount -->
<LightController output="Offset_TaillightAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Headlight" />
</Output>
</LightController>
<!-- Offset_Brakepulse -->
<LightController output="Offset_Brakepulse" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="BrakeAmount" level="0.9"/>
<Step duration="0.1" value="1.0"/>
<Step duration="0.1" value="0.0"/>
</Sequence>
<Output>
<Instruction op="sgc" d="t0" p0="BrakeAmount" c="0.9" />
<Instruction op="sgc" d="t1" p0="Speed" c="1.0" />
<Instruction op="mul" d="t0" p0="t0" p1="t1" />
<Instruction op="lerp" d="output" p0="Brake" p1="seq0" p2="t0" />
</Output>
</LightController>
<!-- Offset_SequentialBrake1 -->
<LightController output="Offset_SequentialBrake1" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Brake" />
</Output>
</LightController>
<!-- Offset_SequentialBrake2 -->
<LightController output="Offset_SequentialBrake2" slew="0.0">
<Sequence output="seq0" loop="false">
<Trigger input="Brake"/>
<Step duration="SeqBrakeT1" value="0.0"/>
<Step duration="1.0" value="1.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="output" p0="Brake" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SequentialBrake3 -->
<LightController output="Offset_SequentialBrake3" slew="0.0">
<Sequence output="seq0" loop="false">
<Trigger input="Brake"/>
<Step duration="SeqBrakeT2" value="0.0"/>
<Step duration="1.0" value="1.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="output" p0="Brake" p1="seq0" />
</Output>
</LightController>
<!-- Offset_HighBeamSepAmount -->
<LightController output="Offset_HighBeamSepAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Highbeam" />
</Output>
</LightController>
<!-- Offset_DayTimeRLAmountDay -->
<LightController output="Offset_DayTimeRLAmountDay" slew="0.0">
<Output>
<Instruction op="slc" d="t0" p0="Headlight" c="0.5" />
<Instruction op="mul" d="output" p0="DaytimeRL" p1="t0" />
</Output>
</LightController>
<!-- Offset_DayTimeRLDim -->
<LightController output="Offset_DayTimeRLDim" slew="0.0">
<Output>
<Instruction op="max" d="t0" p0="IndicatorL" p1="IndicatorR" />
<Instruction op="max" d="t0" p0="t0" p1="Hazard" />
<Instruction op="movc" d="t1" c="0.5" />
<Instruction op="lerp" d="output" p0="DaytimeRL" p1="t1" p2="t0" />
</Output>
</LightController>
<!-- Offset_SequentialIndicatorLeft1 -->
<LightController output="Offset_SequentialIndicatorLeft1" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SequentialIndicatorLeft2 -->
<LightController output="Offset_SequentialIndicatorLeft2" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="SeqIndT1" value="0.0"/>
<Step duration="SeqIndT2" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SequentialIndicatorLeft3 -->
<LightController output="Offset_SequentialIndicatorLeft3" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="SeqIndT2" value="0.0"/>
<Step duration="SeqIndT1" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SequentialIndicatorRight1 -->
<LightController output="Offset_SequentialIndicatorRight1" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SequentialIndicatorRight2 -->
<LightController output="Offset_SequentialIndicatorRight2" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="SeqIndT1" value="0.0"/>
<Step duration="SeqIndT2" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SequentialIndicatorRight3 -->
<LightController output="Offset_SequentialIndicatorRight3" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="SeqIndT2" value="0.0"/>
<Step duration="SeqIndT1" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="output" p0="t0" p1="seq0" />
</Output>
</LightController>
<!-- Offset_SidelightAmount -->
<LightController output="Offset_SidelightAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Sidelight" />
</Output>
</LightController>
<!-- Offset_Numberplatelight -->
<LightController output="Offset_Numberplatelight" slew="0.0">
<Output>
<Instruction op="max" d="t0" p0="Sidelight" p1="Headlight" />
<Instruction op="mulc" d="output" p0="t0" c="0.5" />
</Output>
</LightController>
<!-- Offset_FogLightRearAmount -->
<LightController output="Offset_FogLightRearAmount" slew="0.0">
<Output>
<Instruction op="mov" d="output" p0="Fog" />
</Output>
</LightController>
<!-- Offset_LightsFlashingFrequency1 -->
<LightController output="Offset_LightsFlashingFrequency1" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="Engine" />
<Step duration="0.066" value="1.0"/>
<Step duration="0.033" value="0.0"/>
</Sequence>
<Sequence output="seq1" loop="true">
<Trigger input="Engine" />
<Step duration="0.5" value="1.0"/>
<Step duration="0.5" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="t0" p0="seq0" p1="seq1" />
<Instruction op="mul" d="output" p0="t0" p1="Engine" />
</Output>
</LightController>
<!-- Offset_LightsFlashingFrequency2 -->
<LightController output="Offset_LightsFlashingFrequency2" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="Engine" />
<Step duration="0.066" value="1.0"/>
<Step duration="0.033" value="0.0"/>
</Sequence>
<Sequence output="seq1" loop="true">
<Trigger input="Engine" />
<Step duration="0.5" value="0.0"/>
<Step duration="0.5" value="1.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="t0" p0="seq0" p1="seq1" />
<Instruction op="mul" d="output" p0="t0" p1="Engine" />
</Output>
</LightController>
<!-- Offset_LightsFlashingFrequency3 -->
<LightController output="Offset_LightsFlashingFrequency3" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="Engine" />
<Step duration="0.5" value="1.0"/>
<Step duration="0.5" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="output" p0="seq0" p1="Engine" />
</Output>
</LightController>
<!-- Offset_LightsFlashingFrequency4 -->
<LightController output="Offset_LightsFlashingFrequency4" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="Engine" />
<Step duration="0.5" value="0.0"/>
<Step duration="0.5" value="1.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="output" p0="seq0" p1="Engine" />
</Output>
</LightController>
<!-- Offset_BrakeIndicatorLeft -->
<LightController output="Offset_BrakeIndicatorLeft" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
<Instruction op="lerp" d="output" p0="Brake" p1="seq0" p2="t0" />
</Output>
</LightController>
<!-- Offset_BrakeIndicatorRight -->
<LightController output="Offset_BrakeIndicatorRight" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
<Instruction op="lerp" d="output" p0="Brake" p1="seq0" p2="t0" />
</Output>
</LightController>
<!-- Offset_BrakeReverse -->
<LightController output="Offset_BrakeReverse" slew="0.0">
<Output>
<Instruction op="max" d="output" p0="Brake" p1="Reverse" />
</Output>
</LightController>
<!-- Offset_BrakeSeqIndicatorLeft -->
<LightController output="Offset_BrakeSeqIndicatorLeft" slew="0.0">
<Sequence output="seq0" loop="false">
<Trigger input="Brake"/>
<Step duration="SeqBrakeT2" value="0.0"/>
<Step duration="1.0" value="1.0"/>
</Sequence>
<Sequence output="seq1" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="t0" p0="Brake" p1="seq0" />
<Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq1" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_BrakeSeqIndicatorRight -->
<LightController output="Offset_BrakeSeqIndicatorRight" slew="0.0">
<Sequence output="seq0" loop="false">
<Trigger input="Brake"/>
<Step duration="SeqBrakeT2" value="0.0"/>
<Step duration="1.0" value="1.0"/>
</Sequence>
<Sequence output="seq1" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mul" d="t0" p0="Brake" p1="seq0" />
<Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq1" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_BrakeTailIndicatorLeft -->
<LightController output="Offset_BrakeTailIndicatorLeft" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="Headlight" c="0.5" />
<Instruction op="max" d="t0" p0="t0" p1="Brake" />
<Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_BrakeTailIndicatorRight -->
<LightController output="Offset_BrakeTailIndicatorRight" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="Headlight" c="0.5" />
<Instruction op="max" d="t0" p0="t0" p1="Brake" />
<Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_DRLBrake -->
<LightController output="Offset_DRLBrake" slew="0.0">
<Output>
<Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
<Instruction op="mulc" d="t1" p0="Brake" c="1.0" />
<Instruction op="max" d="output" p0="t0" p1="t1" />
</Output>
</LightController>
<!-- Offset_DRLBrakeIndicatorLeft -->
<LightController output="Offset_DRLBrakeIndicatorLeft" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
<Instruction op="max" d="t0" p0="t0" p1="Brake" />
<Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_DRLBrakeIndicatorRight -->
<LightController output="Offset_DRLBrakeIndicatorRight" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
<Instruction op="max" d="t0" p0="t0" p1="Brake" />
<Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_DRLIndicatorLeft -->
<LightController output="Offset_DRLIndicatorLeft" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
<Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_DRLIndicatorRight -->
<LightController output="Offset_DRLIndicatorRight" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
<Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_SidelightIndicatorBrakeLeft -->
<LightController output="Offset_SidelightIndicatorBrakeLeft" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
<Instruction op="max" d="t0" p0="t0" p1="Brake" />
<Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_SidelightIndicatorBrakeRight -->
<LightController output="Offset_SidelightIndicatorBrakeRight" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
<Instruction op="max" d="t0" p0="t0" p1="Brake" />
<Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_SidelightIndicatorLeft -->
<LightController output="Offset_SidelightIndicatorLeft" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorL" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
<Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_SidelightIndicatorRight -->
<LightController output="Offset_SidelightIndicatorRight" slew="0.0">
<Sequence output="seq0" loop="true">
<Trigger input="IndicatorR" />
<Trigger input="Hazard" />
<Step duration="IndicatorOnTime" value="1.0"/>
<Step duration="IndicatorOffTime" value="0.0"/>
</Sequence>
<Output>
<Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
<Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
<Instruction op="mul" d="t2" p0="t1" p1="seq0" />
<Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
</Output>
</LightController>
<!-- Offset_TailBrakeLight -->
<LightController output="Offset_TailBrakeLight" slew="0.0">
<Output>
<Instruction op="mulc" d="t0" p0="Headlight" c="0.125" />
<Instruction op="mulc" d="t1" p0="Brake" c="1.0" />
<Instruction op="max" d="output" p0="t0" p1="t1" />
</Output>
</LightController>
<!-- Offset_HighHeadLightAmount -->
<LightController output="Offset_HighHeadLightAmount" slew="0.0">
<Output>
<Instruction op="mulc" d="t0" p0="Headlight" c="1.0" />
<Instruction op="mulc" d="t1" p0="Highbeam" c="1.5" />
<Instruction op="max" d="output" p0="t0" p1="t1" />
</Output>
</LightController>
</LightControllers>