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.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

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.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

View file

@ -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:

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
)))
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