Browse Source

Merge branch 'release/1.10.x'

rdb 6 years ago
parent
commit
e98fbc7633
2 changed files with 11 additions and 13 deletions
  1. 9 3
      panda/src/collide/collisionSphere.cxx
  2. 2 10
      panda/src/display/graphicsStateGuardian.cxx

+ 9 - 3
panda/src/collide/collisionSphere.cxx

@@ -620,14 +620,20 @@ intersects_line(double &t1, double &t2,
 
   double A = dot(delta, delta);
 
-  nassertr(A != 0.0, false);
-
   LVector3 fc = from - get_center();
-  double B = 2.0f* dot(delta, fc);
   double fc_d2 = dot(fc, fc);
   double radius = get_radius() + inflate_radius;
   double C = fc_d2 - radius * radius;
 
+  if (A == 0.0) {
+    // Degenerate case where delta is zero.  This is effectively a test
+    // against a point (or sphere, for nonzero inflate_radius).
+    t1 = 0.0;
+    t2 = 0.0;
+    return C < 0.0;
+  }
+
+  double B = 2.0f * dot(delta, fc);
   double radical = B*B - 4.0*A*C;
 
   if (IS_NEARLY_ZERO(radical)) {

+ 2 - 10
panda/src/display/graphicsStateGuardian.cxx

@@ -1433,12 +1433,7 @@ fetch_specified_part(Shader::ShaderMatInput part, InternalName *name,
       // Apply the default OpenGL lights otherwise.
       // Special exception for light 0, which defaults to white.
       string basename = name->get_basename();
-      if (basename == "color" || basename == "diffuse") {
-        t.set_row(3, _light_color_scale);
-        return &t;
-      } else if (basename == "specular") {
-        return &LMatrix4::ones_mat();
-      }
+      return &LMatrix4::ones_mat();
     }
     return fetch_specified_member(NodePath(), name, t);
   }
@@ -1494,7 +1489,7 @@ fetch_specified_part(Shader::ShaderMatInput part, InternalName *name,
     } else if (index == 0) {
       // Apply the default OpenGL lights otherwise.
       // Special exception for light 0, which defaults to white.
-      t.set_row(0, _light_color_scale);
+      t.set_row(0, LVecBase4(1, 1, 1, 1));
     }
     return &t;
   }
@@ -1539,7 +1534,6 @@ fetch_specified_member(const NodePath &np, CPT_InternalName attrib, LMatrix4 &t)
     Light *light = node->as_light();
     nassertr(light != nullptr, &LMatrix4::ident_mat());
     LColor c = light->get_color();
-    c.componentwise_mult(_light_color_scale);
     t.set_row(3, c);
     return &t;
 
@@ -1551,7 +1545,6 @@ fetch_specified_member(const NodePath &np, CPT_InternalName attrib, LMatrix4 &t)
     nassertr(light != nullptr, &LMatrix4::ident_mat());
     if (node->is_ambient_light()) {
       LColor c = light->get_color();
-      c.componentwise_mult(_light_color_scale);
       t.set_row(3, c);
     } else {
       // Non-ambient lights don't currently have an ambient color in Panda3D.
@@ -1570,7 +1563,6 @@ fetch_specified_member(const NodePath &np, CPT_InternalName attrib, LMatrix4 &t)
       t.set_row(3, LColor(0.0f, 0.0f, 0.0f, 1.0f));
     } else {
       LColor c = light->get_color();
-      c.componentwise_mult(_light_color_scale);
       t.set_row(3, c);
     }
     return &t;