@@ -197,9 +197,18 @@ var LightPipeline = new Class({
197
197
198
198
var lightName = 'uLights[' + i + '].' ;
199
199
200
- cameraMatrix . transformPoint ( light . x , light . y , tempVec2 ) ;
201
-
202
- this . set2f ( lightName + 'position' , tempVec2 . x - ( camera . scrollX * light . scrollFactorX * camera . zoom ) , height - ( tempVec2 . y - ( camera . scrollY * light . scrollFactorY ) * camera . zoom ) ) ;
200
+ if ( camera . rotation !== 0 )
201
+ {
202
+ // When camera is rotated, use the camera matrix transformation which handles rotation, scroll, and zoom
203
+ cameraMatrix . transformPoint ( light . x - ( camera . scrollX * light . scrollFactorX ) , light . y - ( camera . scrollY * light . scrollFactorY ) , tempVec2 ) ;
204
+ this . set2f ( lightName + 'position' , tempVec2 . x , height - tempVec2 . y ) ;
205
+ }
206
+ else
207
+ {
208
+ // When camera is not rotated, use the original faster calculation
209
+ cameraMatrix . transformPoint ( light . x , light . y , tempVec2 ) ;
210
+ this . set2f ( lightName + 'position' , tempVec2 . x - ( camera . scrollX * light . scrollFactorX * camera . zoom ) , height - ( tempVec2 . y - ( camera . scrollY * light . scrollFactorY ) * camera . zoom ) ) ;
211
+ }
203
212
this . set3f ( lightName + 'color' , color . r , color . g , color . b ) ;
204
213
this . set1f ( lightName + 'intensity' , light . intensity ) ;
205
214
this . set1f ( lightName + 'radius' , light . radius ) ;
0 commit comments