From 293b76fb1ccd2bda197e36b9f8f4e4f23f8286e4 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 14 Apr 2018 08:36:35 +0200 Subject: [PATCH] Fix interpolation of objects --- src/mercenary/render.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mercenary/render.c b/src/mercenary/render.c index 621db0d..f672eac 100644 --- a/src/mercenary/render.c +++ b/src/mercenary/render.c @@ -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]); } -- 2.13.6