Index: panda/src/pgraph/camera.cxx =================================================================== --- panda/src/pgraph/camera.cxx (revision 2093) +++ panda/src/pgraph/camera.cxx (working copy) @@ -31,6 +31,7 @@ _camera_mask(~PandaNode::get_overall_bit()), _initial_state(RenderState::make_empty()) { + set_lod_scale(1.0); } //////////////////////////////////////////////////////////////////// @@ -45,6 +46,7 @@ _scene(copy._scene), _camera_mask(copy._camera_mask), _initial_state(copy._initial_state), + _lod_scale(copy._lod_scale), _tag_state_key(copy._tag_state_key), _tag_states(copy._tag_states) { Index: panda/src/pgraph/camera.I =================================================================== --- panda/src/pgraph/camera.I (revision 2093) +++ panda/src/pgraph/camera.I (working copy) @@ -222,3 +222,24 @@ get_tag_state_key() const { return _tag_state_key; } + +//////////////////////////////////////////////////////////////////// +// Function: Camera::get_lod_scale +// Access: Published +// Description: Returns the multiplier for lod distances +//////////////////////////////////////////////////////////////////// +INLINE PN_stdfloat Camera:: +get_lod_scale() const { + return _lod_scale; +} + +//////////////////////////////////////////////////////////////////// +// Function: Camera::set_lod_scale +// Access: Published +// Description: Sets the multiplier for lod distances. A higher +// value means you'll see farther switchs than normal +//////////////////////////////////////////////////////////////////// +INLINE void Camera:: +set_lod_scale(PN_stdfloat value) { + _lod_scale = value; +} Index: panda/src/pgraph/camera.h =================================================================== --- panda/src/pgraph/camera.h (revision 2093) +++ panda/src/pgraph/camera.h (working copy) @@ -72,6 +72,9 @@ INLINE void set_tag_state_key(const string &tag_state_key); INLINE const string &get_tag_state_key() const; + INLINE void set_lod_scale(PN_stdfloat value); + INLINE PN_stdfloat get_lod_scale() const; + void set_tag_state(const string &tag_state, const RenderState *state); void clear_tag_state(const string &tag_state); bool has_tag_state(const string &tag_state) const; @@ -93,6 +96,7 @@ NodePath _lod_center; DrawMask _camera_mask; + PN_stdfloat _lod_scale; typedef pvector DisplayRegions; DisplayRegions _display_regions; Index: panda/src/pgraphnodes/lodNode.cxx =================================================================== --- panda/src/pgraphnodes/lodNode.cxx (revision 2093) +++ panda/src/pgraphnodes/lodNode.cxx (working copy) @@ -177,7 +177,8 @@ if (cdata->_got_force_switch) { in_range = (cdata->_force_switch == index); } else { - in_range = sw.in_range_2(dist2*cdata->_lod_scale); + in_range = sw.in_range_2(dist2 * cdata->_lod_scale + * trav->get_scene()->get_camera_node()->get_lod_scale()); } if (in_range) { @@ -376,7 +377,8 @@ PN_stdfloat dist2 = center.dot(center); for (int index = 0; index < (int)cdata->_switch_vector.size(); ++index) { - if (cdata->_switch_vector[index].in_range_2(dist2*cdata->_lod_scale)) { + if (cdata->_switch_vector[index].in_range_2(dist2 * cdata->_lod_scale + * trav->get_scene()->get_camera_node()->get_lod_scale())) { if (pgraph_cat.is_debug()) { pgraph_cat.debug() << data._node_path << " at distance " << sqrt(dist2)