diff --git a/src/c3nav/mapdata/render/engines/base.py b/src/c3nav/mapdata/render/engines/base.py index 720cdba8..cfdf169d 100644 --- a/src/c3nav/mapdata/render/engines/base.py +++ b/src/c3nav/mapdata/render/engines/base.py @@ -29,11 +29,13 @@ class RenderEngine(ABC): filetype = 'dat' # draw an svg image. supports pseudo-3D shadow-rendering - def __init__(self, width: int, height: int, xoff=0, yoff=0, scale=1, buffer=0, background='#FFFFFF', center=True): + def __init__(self, width: int, height: int, xoff=0, yoff=0, zoff=0, + scale=1, buffer=0, background='#FFFFFF', center=True): self.width = width self.height = height self.minx = xoff self.miny = yoff + self.base_z = zoff self.scale = scale self.orig_buffer = buffer self.buffer = int(math.ceil(buffer*self.scale)) diff --git a/src/c3nav/mapdata/render/engines/opengl.py b/src/c3nav/mapdata/render/engines/opengl.py index 1803d4a9..5fbaf805 100644 --- a/src/c3nav/mapdata/render/engines/opengl.py +++ b/src/c3nav/mapdata/render/engines/opengl.py @@ -153,10 +153,10 @@ class OpenGLEngine(Base3DEngine): scale_x = self.scale / self.width * 2 scale_y = self.scale / self.height * 2 - scale_z = (scale_x+scale_y) / 2 + scale_z = 0.05 self.gl_scale = (scale_x, -scale_y, scale_z) - self.gl_offset = (-self.minx * scale_x - 1, self.maxy * scale_y - 1, 0) + self.gl_offset = (-self.minx * scale_x - 1, self.maxy * scale_y - 1, -self.base_z * scale_z) self.vertices = [] diff --git a/src/c3nav/mapdata/render/renderdata.py b/src/c3nav/mapdata/render/renderdata.py index 69a5bb2c..1177587e 100644 --- a/src/c3nav/mapdata/render/renderdata.py +++ b/src/c3nav/mapdata/render/renderdata.py @@ -37,6 +37,7 @@ class Cropper: class LevelRenderData: def __init__(self): self.levels = [] + self.base_altitude = None @staticmethod def rebuild(): @@ -106,6 +107,7 @@ class LevelRenderData: break render_data = LevelRenderData() + render_data.base_altitude = level.base_altitude access_restriction_affected = {} for sublevel in sublevels: diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index 6b6055ce..6af24459 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -29,9 +29,6 @@ class MapRenderer: return box(self.minx-1, self.miny-1, self.maxx+1, self.maxy+1) def render(self, engine_cls, center=True): - engine = engine_cls(self.width, self.height, self.minx, self.miny, - scale=self.scale, buffer=1, background='#DCDCDC', center=center) - # add no access restriction to “unlocked“ access restrictions so lookup gets easier access_permissions = self.access_permissions | set([None]) @@ -39,6 +36,9 @@ class MapRenderer: level_render_data = LevelRenderData.get(self.level) + engine = engine_cls(self.width, self.height, self.minx, self.miny, float(level_render_data.base_altitude), + scale=self.scale, buffer=1, background='#DCDCDC', center=center) + if self.full_levels: levels = tuple(chain(*( tuple(sublevel for sublevel in LevelRenderData.get(level.pk).levels