ecere/gfx/drivers/GL/defaultShader: Fixed restoring lights state
authorJerome St-Louis <jerome@ecere.com>
Mon, 12 Sep 2016 20:01:59 +0000 (16:01 -0400)
committerJerome St-Louis <jerome@ecere.com>
Mon, 12 Sep 2016 20:01:59 +0000 (16:01 -0400)
- Preserve lights state when toggling lighting on/off

ecere/src/gfx/drivers/gl3/defaultShader.ec

index b1dc4bb..1386117 100644 (file)
@@ -193,6 +193,8 @@ public:
 
    float color[4];
 
+   DefaultShaderBits backLightState; backLightState = DefaultShaderBits { separateSpecular = true };
+
    DefaultShader()
    {
       color[0] = 1, color[1] = 1, color[2] = 1, color[3] = 1;
@@ -477,17 +479,21 @@ public:
          ((DefaultShaderBits)state).lighting = on;
          uniformsModified = true;
          if(!on)
-            state &= ~DefaultShaderBits
-            {
-               nonLocalViewer = true;
-               twoSided = true;
-               specular = true;
-               separateSpecular = true;
-               blinnSpecular = true;
-               lightBits = 0xFFFFFF;
-            };
+         {
+            backLightState = state &
+               DefaultShaderBits
+               {
+                  nonLocalViewer = true;
+                  twoSided = true;
+                  specular = true;
+                  separateSpecular = true;
+                  blinnSpecular = true;
+                  lightBits = 0xFFFFFF;
+               };
+            state &= ~backLightState;
+         }
          else
-            state |= DefaultShaderBits { separateSpecular = true };
+            state |= backLightState;
       }
    }