diff options
Diffstat (limited to 'src/render/renderext.cc')
-rw-r--r-- | src/render/renderext.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/render/renderext.cc b/src/render/renderext.cc index 6a59870..b0462d4 100644 --- a/src/render/renderext.cc +++ b/src/render/renderext.cc @@ -107,20 +107,34 @@ void RenderExt::frame(float elapsed) if ((entity()->type() == core::Entity::Controlable)) { if (static_cast<core::EntityDynamic *>(entity())->state() == core::Entity::Docked) { state_visible = false; + return; } } if (state_visible && entity()->model()) { - float r = entity()->model()->radius(); - math::clamp(r, 1.0f, farplane / drawfxdistance); - if (distance() < drawfxdistance * r) { + + if (distance() < core::range::fxdistance) { // entity within detail range state_visible = true; state_detailvisible = true; - } else if ((distance() < drawdistance * r) && (distance() < core::range::max)) { + + } else if (distance() < core::range::maxvisible) { // entity within drawing distance, outside detail range state_visible = true; state_detailvisible = false; + + } else if (distance() < core::range::maxdistance) { + + if ((entity()->type() == core::Entity::Controlable)) { + // controlable entity out of range + state_visible = false; + state_detailvisible = false; + } else { + // entity within drawing distance, outside detail range + state_visible = true; + state_detailvisible = false; + + } } else { // entity out of range state_visible = false; |