Browse Source

fix lights and clip planes when render is transformed

David Rose 20 years ago
parent
commit
6daef3bd29
1 changed files with 4 additions and 4 deletions
  1. 4 4
      panda/src/glstuff/glGraphicsStateGuardian_src.cxx

+ 4 - 4
panda/src/glstuff/glGraphicsStateGuardian_src.cxx

@@ -3937,7 +3937,7 @@ bind_light(PointLight *light_obj, const NodePath &light, int light_id) {
 
   // Position needs to specify x, y, z, and w
   // w == 1 implies non-infinite position
-  CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root());
+  CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root().get_parent());
   LPoint3f pos = light_obj->get_point() * transform->get_mat();
 
   LPoint4f fpos(pos[0], pos[1], pos[2], 1.0f);
@@ -3977,7 +3977,7 @@ bind_light(DirectionalLight *light_obj, const NodePath &light, int light_id) {
 
   // Position needs to specify x, y, z, and w.
   // w == 0 implies light is at infinity
-  CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root());
+  CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root().get_parent());
   LVector3f dir = light_obj->get_direction() * transform->get_mat();
   LPoint4f fdir(-dir[0], -dir[1], -dir[2], 0);
   GLP(Lightfv)(id, GL_POSITION, fdir.get_data());
@@ -4021,7 +4021,7 @@ bind_light(Spotlight *light_obj, const NodePath &light, int light_id) {
 
   // Position needs to specify x, y, z, and w
   // w == 1 implies non-infinite position
-  CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root());
+  CPT(TransformState) transform = light.get_transform(_scene_setup->get_scene_root().get_parent());
   const LMatrix4f &light_mat = transform->get_mat();
   LPoint3f pos = lens->get_nodal_point() * light_mat;
   LVector3f dir = lens->get_view_vector() * light_mat;
@@ -5203,7 +5203,7 @@ void CLP(GraphicsStateGuardian)::
 bind_clip_plane(const NodePath &plane, int plane_id) {
   GLenum id = get_clip_plane_id(plane_id);
 
-  CPT(TransformState) transform = plane.get_transform(_scene_setup->get_scene_root());
+  CPT(TransformState) transform = plane.get_transform(_scene_setup->get_scene_root().get_parent());
   const PlaneNode *plane_node;
   DCAST_INTO_V(plane_node, plane.node());
   Planef xformed_plane = plane_node->get_plane() * transform->get_mat();