door heights
This commit is contained in:
parent
f2b0fc26b1
commit
3315fbf057
3 changed files with 27 additions and 3 deletions
20
src/c3nav/mapdata/migrations/0045_level_door_height.py
Normal file
20
src/c3nav/mapdata/migrations/0045_level_door_height.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.11.6 on 2017-11-14 20:28
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mapdata', '0044_mapupdate_processed'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='level',
|
||||||
|
name='door_height',
|
||||||
|
field=models.DecimalField(decimal_places=2, default=2.0, max_digits=6, verbose_name='door height'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -21,6 +21,7 @@ class Level(SpecificLocation, models.Model):
|
||||||
"""
|
"""
|
||||||
base_altitude = models.DecimalField(_('base altitude'), null=False, unique=True, max_digits=6, decimal_places=2)
|
base_altitude = models.DecimalField(_('base altitude'), null=False, unique=True, max_digits=6, decimal_places=2)
|
||||||
default_height = models.DecimalField(_('default space height'), max_digits=6, decimal_places=2, default=3.0)
|
default_height = models.DecimalField(_('default space height'), max_digits=6, decimal_places=2, default=3.0)
|
||||||
|
door_height = models.DecimalField(_('door height'), max_digits=6, decimal_places=2, default=2.0)
|
||||||
on_top_of = models.ForeignKey('mapdata.Level', null=True, on_delete=models.CASCADE,
|
on_top_of = models.ForeignKey('mapdata.Level', null=True, on_delete=models.CASCADE,
|
||||||
related_name='levels_on_top', verbose_name=_('on top of'))
|
related_name='levels_on_top', verbose_name=_('on top of'))
|
||||||
short_label = models.SlugField(max_length=20, verbose_name=_('short label'), unique=True)
|
short_label = models.SlugField(max_length=20, verbose_name=_('short label'), unique=True)
|
||||||
|
|
|
@ -283,6 +283,7 @@ class LevelRenderData:
|
||||||
new_geoms.short_label = old_geoms.short_label
|
new_geoms.short_label = old_geoms.short_label
|
||||||
new_geoms.base_altitude = old_geoms.base_altitude
|
new_geoms.base_altitude = old_geoms.base_altitude
|
||||||
new_geoms.default_height = old_geoms.default_height
|
new_geoms.default_height = old_geoms.default_height
|
||||||
|
new_geoms.door_height = old_geoms.door_height
|
||||||
new_geoms.min_altitude = (min(area.altitude for area in new_geoms.altitudeareas)
|
new_geoms.min_altitude = (min(area.altitude for area in new_geoms.altitudeareas)
|
||||||
if new_geoms.altitudeareas else new_geoms.base_altitude)
|
if new_geoms.altitudeareas else new_geoms.base_altitude)
|
||||||
|
|
||||||
|
@ -381,6 +382,7 @@ class LevelGeometries:
|
||||||
self.short_label = None
|
self.short_label = None
|
||||||
self.base_altitude = None
|
self.base_altitude = None
|
||||||
self.default_height = None
|
self.default_height = None
|
||||||
|
self.door_height = None
|
||||||
self.min_altitude = None
|
self.min_altitude = None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -475,6 +477,7 @@ class LevelGeometries:
|
||||||
geoms.short_label = level.short_label
|
geoms.short_label = level.short_label
|
||||||
geoms.base_altititude = int(level.base_altitude * 1000)
|
geoms.base_altititude = int(level.base_altitude * 1000)
|
||||||
geoms.default_height = int(level.default_height * 1000)
|
geoms.default_height = int(level.default_height * 1000)
|
||||||
|
geoms.door_height = int(level.door_height * 1000)
|
||||||
geoms.min_altitude = (min(area.altitude for area in geoms.altitudeareas)
|
geoms.min_altitude = (min(area.altitude for area in geoms.altitudeareas)
|
||||||
if geoms.altitudeareas else geoms.base_altitude)
|
if geoms.altitudeareas else geoms.base_altitude)
|
||||||
|
|
||||||
|
@ -624,8 +627,8 @@ class LevelGeometries:
|
||||||
self.doors_extended = HybridGeometry(self.doors.geom, self.doors.faces)
|
self.doors_extended = HybridGeometry(self.doors.geom, self.doors.faces)
|
||||||
self.doors.build_polyhedron(self._create_polyhedron,
|
self.doors.build_polyhedron(self._create_polyhedron,
|
||||||
crops=crops,
|
crops=crops,
|
||||||
lower=vertex_wall_heights - int(1 * 1000),
|
lower=vertex_altitudes + self.door_height,
|
||||||
upper=vertex_wall_heights)
|
upper=vertex_wall_heights - 1)
|
||||||
|
|
||||||
if interpolator is not None:
|
if interpolator is not None:
|
||||||
upper = interpolator(*np.transpose(self.vertices)).astype(np.int32) - int(0.7 * 1000)
|
upper = interpolator(*np.transpose(self.vertices)).astype(np.int32) - int(0.7 * 1000)
|
||||||
|
@ -634,7 +637,7 @@ class LevelGeometries:
|
||||||
upper=upper,
|
upper=upper,
|
||||||
bottom=False)
|
bottom=False)
|
||||||
self.doors_extended.build_polyhedron(self._create_polyhedron,
|
self.doors_extended.build_polyhedron(self._create_polyhedron,
|
||||||
lower=vertex_wall_heights,
|
lower=vertex_wall_heights - 1,
|
||||||
upper=upper,
|
upper=upper,
|
||||||
bottom=False)
|
bottom=False)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue