mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 01:44:06 -04:00
Merge branch 'release/1.10.x'
This commit is contained in:
commit
e98fbc7633
@ -620,14 +620,20 @@ intersects_line(double &t1, double &t2,
|
|||||||
|
|
||||||
double A = dot(delta, delta);
|
double A = dot(delta, delta);
|
||||||
|
|
||||||
nassertr(A != 0.0, false);
|
|
||||||
|
|
||||||
LVector3 fc = from - get_center();
|
LVector3 fc = from - get_center();
|
||||||
double B = 2.0f* dot(delta, fc);
|
|
||||||
double fc_d2 = dot(fc, fc);
|
double fc_d2 = dot(fc, fc);
|
||||||
double radius = get_radius() + inflate_radius;
|
double radius = get_radius() + inflate_radius;
|
||||||
double C = fc_d2 - radius * 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;
|
double radical = B*B - 4.0*A*C;
|
||||||
|
|
||||||
if (IS_NEARLY_ZERO(radical)) {
|
if (IS_NEARLY_ZERO(radical)) {
|
||||||
|
@ -1433,12 +1433,7 @@ fetch_specified_part(Shader::ShaderMatInput part, InternalName *name,
|
|||||||
// Apply the default OpenGL lights otherwise.
|
// Apply the default OpenGL lights otherwise.
|
||||||
// Special exception for light 0, which defaults to white.
|
// Special exception for light 0, which defaults to white.
|
||||||
string basename = name->get_basename();
|
string basename = name->get_basename();
|
||||||
if (basename == "color" || basename == "diffuse") {
|
return &LMatrix4::ones_mat();
|
||||||
t.set_row(3, _light_color_scale);
|
|
||||||
return &t;
|
|
||||||
} else if (basename == "specular") {
|
|
||||||
return &LMatrix4::ones_mat();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return fetch_specified_member(NodePath(), name, t);
|
return fetch_specified_member(NodePath(), name, t);
|
||||||
}
|
}
|
||||||
@ -1494,7 +1489,7 @@ fetch_specified_part(Shader::ShaderMatInput part, InternalName *name,
|
|||||||
} else if (index == 0) {
|
} else if (index == 0) {
|
||||||
// Apply the default OpenGL lights otherwise.
|
// Apply the default OpenGL lights otherwise.
|
||||||
// Special exception for light 0, which defaults to white.
|
// 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;
|
return &t;
|
||||||
}
|
}
|
||||||
@ -1539,7 +1534,6 @@ fetch_specified_member(const NodePath &np, CPT_InternalName attrib, LMatrix4 &t)
|
|||||||
Light *light = node->as_light();
|
Light *light = node->as_light();
|
||||||
nassertr(light != nullptr, &LMatrix4::ident_mat());
|
nassertr(light != nullptr, &LMatrix4::ident_mat());
|
||||||
LColor c = light->get_color();
|
LColor c = light->get_color();
|
||||||
c.componentwise_mult(_light_color_scale);
|
|
||||||
t.set_row(3, c);
|
t.set_row(3, c);
|
||||||
return &t;
|
return &t;
|
||||||
|
|
||||||
@ -1551,7 +1545,6 @@ fetch_specified_member(const NodePath &np, CPT_InternalName attrib, LMatrix4 &t)
|
|||||||
nassertr(light != nullptr, &LMatrix4::ident_mat());
|
nassertr(light != nullptr, &LMatrix4::ident_mat());
|
||||||
if (node->is_ambient_light()) {
|
if (node->is_ambient_light()) {
|
||||||
LColor c = light->get_color();
|
LColor c = light->get_color();
|
||||||
c.componentwise_mult(_light_color_scale);
|
|
||||||
t.set_row(3, c);
|
t.set_row(3, c);
|
||||||
} else {
|
} else {
|
||||||
// Non-ambient lights don't currently have an ambient color in Panda3D.
|
// 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));
|
t.set_row(3, LColor(0.0f, 0.0f, 0.0f, 1.0f));
|
||||||
} else {
|
} else {
|
||||||
LColor c = light->get_color();
|
LColor c = light->get_color();
|
||||||
c.componentwise_mult(_light_color_scale);
|
|
||||||
t.set_row(3, c);
|
t.set_row(3, c);
|
||||||
}
|
}
|
||||||
return &t;
|
return &t;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user