add renderer z offset

This commit is contained in:
Laura Klünder 2017-12-05 18:13:06 +01:00
parent 46256e63df
commit 3992ccd552
4 changed files with 10 additions and 6 deletions

View file

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

View file

@ -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 = []

View file

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

View file

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