new renderers: respect --full-levels

This commit is contained in:
Laura Klünder 2018-12-06 17:48:50 +01:00
parent 4e2e8213bc
commit 8c9725a82a
4 changed files with 20 additions and 7 deletions

View file

@ -8,7 +8,7 @@ from shapely.ops import unary_union
from c3nav.mapdata.render.engines import register_engine from c3nav.mapdata.render.engines import register_engine
from c3nav.mapdata.render.engines.base3d import Base3DEngine 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 from c3nav.mapdata.utils.geometry import assert_multipolygon
@ -204,8 +204,11 @@ class BlenderEngine(Base3DEngine):
def _add_python(self, code): def _add_python(self, code):
self.result += self._clean_python(code)+'\n' self.result += self._clean_python(code)+'\n'
def custom_render(self, level_render_data, access_permissions): def custom_render(self, level_render_data, access_permissions, full_levels):
levels = get_full_levels(level_render_data) if full_levels:
levels = get_full_levels(level_render_data)
else:
levels = get_main_levels(level_render_data)
buildings = None buildings = None

View file

@ -9,7 +9,7 @@ from shapely.ops import unary_union
from c3nav.mapdata.render.engines import register_engine from c3nav.mapdata.render.engines import register_engine
from c3nav.mapdata.render.engines.base3d import Base3DEngine 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 from c3nav.mapdata.utils.geometry import assert_multipolygon
@ -62,8 +62,11 @@ class OpenSCADEngine(Base3DEngine):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.root = OpenScadRoot() self.root = OpenScadRoot()
def custom_render(self, level_render_data, access_permissions): def custom_render(self, level_render_data, access_permissions, full_levels):
levels = get_full_levels(level_render_data) if full_levels:
levels = get_full_levels(level_render_data)
else:
levels = get_main_levels(level_render_data)
buildings = None buildings = None
areas = None areas = None

View file

@ -39,7 +39,7 @@ class MapRenderer:
scale=self.scale, buffer=1, background='#DCDCDC', center=center) scale=self.scale, buffer=1, background='#DCDCDC', center=center)
if hasattr(engine, 'custom_render'): 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 return engine
if self.full_levels: if self.full_levels:

View file

@ -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 for level in level_render_data.levels if level.on_top_of_id is None
))) )))
return levels 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