diff --git a/panda/src/gobj/lens.I b/panda/src/gobj/lens.I index 91fb6e7170..d20d53bfd7 100644 --- a/panda/src/gobj/lens.I +++ b/panda/src/gobj/lens.I @@ -667,9 +667,11 @@ do_get_film_offset(const CData *cdata) const { */ INLINE void Lens:: do_set_near(CData *cdata, PN_stdfloat near_distance) { - cdata->_near_distance = near_distance; - do_adjust_comp_flags(cdata, CF_projection_mat | CF_projection_mat_inv, 0); - do_throw_change_event(cdata); + if (near_distance != cdata->_near_distance) { + cdata->_near_distance = near_distance; + do_adjust_comp_flags(cdata, CF_projection_mat | CF_projection_mat_inv, 0); + do_throw_change_event(cdata); + } } /** @@ -685,9 +687,11 @@ do_get_near(const CData *cdata) const { */ INLINE void Lens:: do_set_far(CData *cdata, PN_stdfloat far_distance) { - cdata->_far_distance = far_distance; - do_adjust_comp_flags(cdata, CF_projection_mat | CF_projection_mat_inv, 0); - do_throw_change_event(cdata); + if (far_distance != cdata->_far_distance) { + cdata->_far_distance = far_distance; + do_adjust_comp_flags(cdata, CF_projection_mat | CF_projection_mat_inv, 0); + do_throw_change_event(cdata); + } } /** @@ -703,10 +707,12 @@ do_get_far(const CData *cdata) const { */ INLINE void Lens:: do_set_near_far(CData *cdata, PN_stdfloat near_distance, PN_stdfloat far_distance) { - cdata->_near_distance = near_distance; - cdata->_far_distance = far_distance; - do_adjust_comp_flags(cdata, CF_projection_mat | CF_projection_mat_inv, 0); - do_throw_change_event(cdata); + if (near_distance != cdata->_near_distance || far_distance != cdata->_far_distance) { + cdata->_near_distance = near_distance; + cdata->_far_distance = far_distance; + do_adjust_comp_flags(cdata, CF_projection_mat | CF_projection_mat_inv, 0); + do_throw_change_event(cdata); + } } INLINE std::ostream &