From: Andreas Eversberg Date: Sat, 14 Apr 2018 06:36:35 +0000 (+0200) Subject: Fix interpolation of objects X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=mercenary-reloaded.git;a=commitdiff_plain;h=293b76fb1ccd2bda197e36b9f8f4e4f23f8286e4;hp=6324ef1bbccd1ff00111eda853f8986a9d956105 Fix interpolation of objects --- 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]); }