mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
Commit Camera::set_lod_scale patch by Josh Enes
This commit is contained in:
parent
0d7773d30a
commit
19cb1e5230
@ -250,3 +250,24 @@ INLINE const string &Camera::
|
||||
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. This value
|
||||
// is multiplied with the LOD scale set on LodNodes.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void Camera::
|
||||
set_lod_scale(PN_stdfloat value) {
|
||||
_lod_scale = value;
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ Camera(const string &name, Lens *lens) :
|
||||
_camera_mask(~PandaNode::get_overall_bit()),
|
||||
_initial_state(RenderState::make_empty())
|
||||
{
|
||||
set_lod_scale(1.0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -45,6 +46,7 @@ Camera(const Camera ©) :
|
||||
_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)
|
||||
{
|
||||
|
@ -75,6 +75,9 @@ PUBLISHED:
|
||||
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;
|
||||
@ -97,6 +100,7 @@ private:
|
||||
NodePath _lod_center;
|
||||
|
||||
DrawMask _camera_mask;
|
||||
PN_stdfloat _lod_scale;
|
||||
|
||||
typedef pvector<DisplayRegionBase *> DisplayRegions;
|
||||
DisplayRegions _display_regions;
|
||||
|
@ -177,7 +177,8 @@ cull_callback(CullTraverser *trav, CullTraverserData &data) {
|
||||
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 @@ compute_child(CullTraverser *trav, CullTraverserData &data) {
|
||||
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user