@@ -422,7 +422,7 @@ public abstract class LightPrimitive : RenderPrimitive
422422 public LightPrimitive ( Light light )
423423 {
424424 Light = light ;
425- StateCount = Light . Cycle ? 2 * Light . States . Count - 2 : Light . States . Count ;
425+ StateCount = Math . Max ( Light . Cycle ? 2 * Light . States . Count - 2 : Light . States . Count , 1 ) ;
426426 UpdateStates ( State , ( State + 1 ) % StateCount ) ;
427427 }
428428
@@ -437,7 +437,7 @@ protected void SetUpTransitions(Action<int, int, int> transitionHandler)
437437 for ( var i = 0 ; i < Light . States . Count - 1 ; i ++ )
438438 transitionHandler ( i , i , i + 1 ) ;
439439 for ( var i = Light . States . Count - 1 ; i > 0 ; i -- )
440- transitionHandler ( Light . States . Count * 2 - 1 - i , i , i - 1 ) ;
440+ transitionHandler ( ( Light . States . Count * 2 - 2 ) - i , i , i - 1 ) ;
441441 }
442442 else
443443 {
@@ -891,6 +891,12 @@ public override void Draw(GraphicsDevice graphicsDevice)
891891
892892 protected override void UpdateStates ( int stateIndex1 , int stateIndex2 )
893893 {
894+ // Cycling light: state index will be set above actual number of states
895+ if ( stateIndex1 >= Light . States . Count )
896+ stateIndex1 = StateCount - stateIndex1 ;
897+ if ( stateIndex2 >= Light . States . Count )
898+ stateIndex2 = StateCount - stateIndex2 ;
899+
894900 var state1 = Light . States [ stateIndex1 ] ;
895901 var state2 = Light . States [ stateIndex2 ] ;
896902
0 commit comments