OVR: Fix scale of fixed (interior) objects (bus, taxi, intercity)
authorAndreas Eversberg <jolly@eversberg.eu>
Sun, 15 Apr 2018 08:22:38 +0000 (10:22 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sun, 22 Apr 2018 10:04:03 +0000 (12:04 +0200)
src/mercenary/render.c

index b275e43..b4f53b9 100644 (file)
@@ -63,6 +63,7 @@
 #define EXPLOSION_VERTICES     16
 #define EXPLOSION_ELIPSE       1.17
 #define SIGHT_DIST             78.74   /* distanc of sights in inch */
+#define FIX_OBJECT_SCALE       16
 
 /*
  *  render item definition and structures
@@ -1742,6 +1743,12 @@ void render_one_item(render_item_t *render_item, int vr)
                        rc = use_coord("object", render_item->u.polygon.vertex[i], &x[i], &y[i], &z[i], fix);
                        if (rc < 0)
                                break;
+                       /* fixed objects are pre-scaled by 16, so we correct this */
+                       if (fix) {
+                               x[i] /= FIX_OBJECT_SCALE;
+                               y[i] /= FIX_OBJECT_SCALE;
+                               z[i] /= FIX_OBJECT_SCALE;
+                       }
                        /* interpolate motion, if object is moving */
                        if ((render_item->type == RENDER_ITEM_OBJECT_POLYGON || render_item->type == RENDER_ITEM_TAG_POLYGON_OBJECT)  && render_item_object_info && render_item_object_info->u.info.moving) {
                                for (o = 0; o < interpolation.object_count; o++) {
@@ -1794,6 +1801,12 @@ void render_one_item(render_item_t *render_item, int vr)
                        rc = use_coord("object", render_item->u.line.vertex[i], &x[i], &y[i], &z[i], fix);
                        if (rc < 0)
                                break;
+                       /* fixed objects are pre-scaled by 16, so we correct this */
+                       if (fix) {
+                               x[i] /= FIX_OBJECT_SCALE;
+                               y[i] /= FIX_OBJECT_SCALE;
+                               z[i] /= FIX_OBJECT_SCALE;
+                       }
                        /* interpolate motion, if object is moving */
                        if ((render_item->type == RENDER_ITEM_OBJECT_LINE || render_item->type == RENDER_ITEM_TAG_LINE_OBJECT)  && render_item_object_info && render_item_object_info->u.info.moving) {
                                for (o = 0; o < interpolation.object_count; o++) {