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' filetype = 'dat'
# draw an svg image. supports pseudo-3D shadow-rendering # 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.width = width
self.height = height self.height = height
self.minx = xoff self.minx = xoff
self.miny = yoff self.miny = yoff
self.base_z = zoff
self.scale = scale self.scale = scale
self.orig_buffer = buffer self.orig_buffer = buffer
self.buffer = int(math.ceil(buffer*self.scale)) 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_x = self.scale / self.width * 2
scale_y = self.scale / self.height * 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_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 = [] self.vertices = []

View file

@ -37,6 +37,7 @@ class Cropper:
class LevelRenderData: class LevelRenderData:
def __init__(self): def __init__(self):
self.levels = [] self.levels = []
self.base_altitude = None
@staticmethod @staticmethod
def rebuild(): def rebuild():
@ -106,6 +107,7 @@ class LevelRenderData:
break break
render_data = LevelRenderData() render_data = LevelRenderData()
render_data.base_altitude = level.base_altitude
access_restriction_affected = {} access_restriction_affected = {}
for sublevel in sublevels: 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) return box(self.minx-1, self.miny-1, self.maxx+1, self.maxy+1)
def render(self, engine_cls, center=True): 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 # add no access restriction to “unlocked“ access restrictions so lookup gets easier
access_permissions = self.access_permissions | set([None]) access_permissions = self.access_permissions | set([None])
@ -39,6 +36,9 @@ class MapRenderer:
level_render_data = LevelRenderData.get(self.level) 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: if self.full_levels:
levels = tuple(chain(*( levels = tuple(chain(*(
tuple(sublevel for sublevel in LevelRenderData.get(level.pk).levels tuple(sublevel for sublevel in LevelRenderData.get(level.pk).levels