Fix interpolation of objects
authorAndreas Eversberg <jolly@eversberg.eu>
Sat, 14 Apr 2018 06:36:35 +0000 (08:36 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sat, 14 Apr 2018 06:36:35 +0000 (08:36 +0200)
src/mercenary/render.c

index 621db0d..f672eac 100644 (file)
@@ -1704,7 +1704,7 @@ void render_one_item(render_item_t *render_item)
 #endif
 
                /* special case where we don't want to interpolate motion (taxi/busses/intercity) */
-               if (render_item->type == RENDER_ITEM_OBJECT_POLYGON && render_item_object_info && !render_item_object_info->u.info.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) {
 //                     GET_ORIENTATION_FIX;
                        fix = 1;
                }
@@ -1743,7 +1743,7 @@ void render_one_item(render_item_t *render_item)
                GET_ORIENTATION;
                int fix = 0;
                double x[2], y[2], z[2];
-               int i;
+               int i, o;
                int rc;
 
 #ifdef DEBUG_ITEMS
@@ -1769,6 +1769,18 @@ void render_one_item(render_item_t *render_item)
                        rc = use_coord("object", render_item->u.line.vertex[i], &x[i], &y[i], &z[i], fix);
                        if (rc < 0)
                                break;
+                       /* 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++) {
+                                       if (interpolation.object_id[o] == render_item_object_info->u.info.id)
+                                               break;
+                               }
+                               if (o < interpolation.object_count) {
+                                       x[i] += interpolation.object_offset_east[o];
+                                       y[i] += interpolation.object_offset_height[o];
+                                       z[i] += interpolation.object_offset_north[o];
+                               }
+                       }
                        /* rotate vertex */
                        rotate_coordinate(roll, pitch, yaw, &x[i], &y[i], &z[i]);
                }