From 8c9725a82a0f383745208eadc1c90eb2a6b5f29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 6 Dec 2018 17:48:50 +0100 Subject: [PATCH] new renderers: respect --full-levels --- src/c3nav/mapdata/render/engines/blender.py | 9 ++++++--- src/c3nav/mapdata/render/engines/openscad.py | 9 ++++++--- src/c3nav/mapdata/render/renderer.py | 2 +- src/c3nav/mapdata/render/utils.py | 7 +++++++ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/c3nav/mapdata/render/engines/blender.py b/src/c3nav/mapdata/render/engines/blender.py index 250d4905..21e62db4 100644 --- a/src/c3nav/mapdata/render/engines/blender.py +++ b/src/c3nav/mapdata/render/engines/blender.py @@ -8,7 +8,7 @@ from shapely.ops import unary_union from c3nav.mapdata.render.engines import register_engine from c3nav.mapdata.render.engines.base3d import Base3DEngine -from c3nav.mapdata.render.utils import get_full_levels +from c3nav.mapdata.render.utils import get_full_levels, get_main_levels from c3nav.mapdata.utils.geometry import assert_multipolygon @@ -204,8 +204,11 @@ class BlenderEngine(Base3DEngine): def _add_python(self, code): self.result += self._clean_python(code)+'\n' - def custom_render(self, level_render_data, access_permissions): - levels = get_full_levels(level_render_data) + def custom_render(self, level_render_data, access_permissions, full_levels): + if full_levels: + levels = get_full_levels(level_render_data) + else: + levels = get_main_levels(level_render_data) buildings = None diff --git a/src/c3nav/mapdata/render/engines/openscad.py b/src/c3nav/mapdata/render/engines/openscad.py index 55246bfb..e82baa2e 100644 --- a/src/c3nav/mapdata/render/engines/openscad.py +++ b/src/c3nav/mapdata/render/engines/openscad.py @@ -9,7 +9,7 @@ from shapely.ops import unary_union from c3nav.mapdata.render.engines import register_engine from c3nav.mapdata.render.engines.base3d import Base3DEngine -from c3nav.mapdata.render.utils import get_full_levels +from c3nav.mapdata.render.utils import get_full_levels, get_main_levels from c3nav.mapdata.utils.geometry import assert_multipolygon @@ -62,8 +62,11 @@ class OpenSCADEngine(Base3DEngine): super().__init__(*args, **kwargs) self.root = OpenScadRoot() - def custom_render(self, level_render_data, access_permissions): - levels = get_full_levels(level_render_data) + def custom_render(self, level_render_data, access_permissions, full_levels): + if full_levels: + levels = get_full_levels(level_render_data) + else: + levels = get_main_levels(level_render_data) buildings = None areas = None diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index be548df6..a77b8ad8 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -39,7 +39,7 @@ class MapRenderer: scale=self.scale, buffer=1, background='#DCDCDC', center=center) if hasattr(engine, 'custom_render'): - engine.custom_render(level_render_data, access_permissions) + engine.custom_render(level_render_data, access_permissions, self.full_levels) return engine if self.full_levels: diff --git a/src/c3nav/mapdata/render/utils.py b/src/c3nav/mapdata/render/utils.py index 653f1e8d..3f56275e 100644 --- a/src/c3nav/mapdata/render/utils.py +++ b/src/c3nav/mapdata/render/utils.py @@ -20,3 +20,10 @@ def get_full_levels(level_render_data): for level in level_render_data.levels if level.on_top_of_id is None ))) return levels + + +def get_main_levels(level_render_data): + main_level_pk = [level for level in level_render_data.levels if level.on_top_of_id is None][-1].pk + levels = tuple(level for level in level_render_data.levels + if level.pk == main_level_pk or level.on_top_of_id == main_level_pk) + return levels