@@ -76,9 +76,16 @@ public void OnStart()
76
76
77
77
AssignLampMapping ( lampMapping ) ;
78
78
79
- // turn it off
80
79
if ( _lamps . ContainsKey ( lampMapping . Device ) ) {
81
- HandleLampEvent ( lampMapping . Id , lampMapping . InternalId , LampStatus . Off ) ;
80
+ // turn off non-rgb lamps, turn on rgb lamps, but set to channel to 0
81
+
82
+ if ( lampMapping . Type != LampType . RgbMulti ) {
83
+ HandleLampEvent ( lampMapping . Id , lampMapping . InternalId , LampStatus . Off ) ;
84
+ }
85
+ else {
86
+ HandleLampEvent ( lampMapping . Id , lampMapping . InternalId , LampStatus . On ) ;
87
+ HandleLampEvent ( lampMapping . Id , lampMapping . InternalId , 0f ) ;
88
+ }
82
89
}
83
90
}
84
91
@@ -103,7 +110,7 @@ private void HandleLampEvent(object sender, LampEventArgs lampEvent)
103
110
104
111
public void HandleLampEvent ( string id , int internalId , float value )
105
112
{
106
- Apply ( id , internalId , LampSource . Lamp , false , ( state , lamp , mapping ) => ApplyValue ( id , int . TryParse ( id , out var internalId ) ? internalId : 0 , value , state , lamp , mapping ) ) ;
113
+ Apply ( id , internalId , LampSource . Lamp , false , ( state , lamp , mapping ) => ApplyValue ( id , internalId , value , state , lamp , mapping ) ) ;
107
114
}
108
115
109
116
public void HandleLampEvent ( string id , int internalId , LampStatus status )
@@ -116,9 +123,9 @@ public void HandleLampEvent(string id, int internalId, Color color)
116
123
Apply ( id , internalId , LampSource . Lamp , false , ( state , lamp , _ ) => ApplyColor ( id , color , state , lamp ) ) ;
117
124
}
118
125
119
- public void HandleCoilEvent ( string id , bool isEnabled )
126
+ public void HandleCoilEvent ( string id , int internalId , bool isEnabled )
120
127
{
121
- Apply ( id , 0 , LampSource . Lamp , true , ( state , lamp , _ ) => ApplyStatus ( id , isEnabled ? LampStatus . On : LampStatus . Off , state , lamp ) ) ;
128
+ Apply ( id , internalId , LampSource . Lamp , true , ( state , lamp , _ ) => ApplyStatus ( id , isEnabled ? LampStatus . On : LampStatus . Off , state , lamp ) ) ;
122
129
}
123
130
124
131
private void Apply ( string id , int internalId , LampSource lampSource , bool isCoil , Action < LampState , IApiLamp ? , LampMapping ? > action )
@@ -191,11 +198,9 @@ private void ApplyValue(string id, int internalId, float value, LampState state,
191
198
break ;
192
199
193
200
case LampType . RgbMulti :
194
- if ( mapping . InternalId == internalId ) {
195
- state . SetChannel ( mapping . Channel , value / 255f ) ;
196
- LampStates [ id ] = state ;
197
- lamp ? . OnLamp ( state . Color . ToUnityColor ( ) ) ;
198
- }
201
+ state . SetChannel ( mapping . Channel , value / 255f ) ;
202
+ LampStates [ id ] = state ;
203
+ lamp ? . OnLamp ( state . Color . ToUnityColor ( ) ) ;
199
204
break ;
200
205
201
206
case LampType . SingleFading :
@@ -232,7 +237,10 @@ private void AssignLampMapping(LampMapping lampMapping)
232
237
_lampMappings [ id ] [ lampMapping . InternalId ] = new Dictionary < ILampDeviceComponent , LampMapping > ( ) ;
233
238
}
234
239
_lampMappings [ id ] [ lampMapping . InternalId ] [ lampMapping . Device ] = lampMapping ;
235
- LampStates [ id ] = new LampState ( lampMapping . Device . LampStatus , lampMapping . Device . LampColor . ToEngineColor ( ) ) ;
240
+
241
+ if ( ! LampStates . ContainsKey ( id ) ) {
242
+ LampStates [ id ] = new LampState ( lampMapping . Device . LampStatus , lampMapping . Device . LampColor . ToEngineColor ( ) ) ;
243
+ }
236
244
}
237
245
238
246
#if UNITY_EDITOR
0 commit comments