diff --git a/common/include/3d.h b/common/include/3d.h index d8cbca874..2e3b14d5f 100644 --- a/common/include/3d.h +++ b/common/include/3d.h @@ -150,6 +150,12 @@ g3s_codes g3_check_codes(int nv,g3s_point **pointlist); //rotates a point. returns codes. does not check if already rotated ubyte g3_rotate_point(g3s_point &dest,const vms_vector &src); +static inline g3s_point g3_rotate_point(const vms_vector &src) __attribute_warn_unused_result; +static inline g3s_point g3_rotate_point(const vms_vector &src) +{ + g3s_point dest; + return g3_rotate_point(dest, src), dest; +} //projects a point void g3_project_point(g3s_point &point); diff --git a/similar/3d/interp.cpp b/similar/3d/interp.cpp index ed1b04290..4ab773cf8 100644 --- a/similar/3d/interp.cpp +++ b/similar/3d/interp.cpp @@ -439,11 +439,10 @@ void g3_draw_polygon_model(ubyte *p,grs_bitmap **model_bitmaps,const vms_angvec case OP_RODBM: { - g3s_point rod_bot_p,rod_top_p; g3s_lrgb rodbm_light = { f1_0, f1_0, f1_0 }; - g3_rotate_point(rod_bot_p,*vp(p+20)); - g3_rotate_point(rod_top_p,*vp(p+4)); + const auto rod_bot_p = g3_rotate_point(*vp(p+20)); + const auto rod_top_p = g3_rotate_point(*vp(p+4)); g3_draw_rod_tmap(*model_bitmaps[w(p+2)],rod_bot_p,w(p+16),rod_top_p,w(p+32),rodbm_light); @@ -620,11 +619,10 @@ void g3_draw_morphing_model(ubyte *p,grs_bitmap **model_bitmaps,const vms_angvec case OP_RODBM: { - g3s_point rod_bot_p,rod_top_p; g3s_lrgb rodbm_light = { f1_0, f1_0, f1_0 }; - g3_rotate_point(rod_bot_p,*vp(p+20)); - g3_rotate_point(rod_top_p,*vp(p+4)); + const auto rod_bot_p = g3_rotate_point(*vp(p+20)); + const auto rod_top_p = g3_rotate_point(*vp(p+4)); g3_draw_rod_tmap(*model_bitmaps[w(p+2)],rod_bot_p,w(p+16),rod_top_p,w(p+32),rodbm_light); diff --git a/similar/editor/meddraw.cpp b/similar/editor/meddraw.cpp index 628043982..81b28e56b 100644 --- a/similar/editor/meddraw.cpp +++ b/similar/editor/meddraw.cpp @@ -84,13 +84,11 @@ static void draw_seg_objects(const vcsegptr_t seg) { range_for (auto obj, objects_in(*seg)) { - g3s_point sphere_point; - if ((obj->type==OBJ_PLAYER) && (static_cast(obj) > 0 )) gr_setcolor(BM_XRGB( 0, 25, 0 )); else gr_setcolor(obj==ConsoleObject?PLAYER_COLOR:ROBOT_COLOR); - g3_rotate_point(sphere_point,obj->pos); + auto sphere_point = g3_rotate_point(obj->pos); g3_draw_sphere(sphere_point,obj->size); } } diff --git a/similar/main/automap.cpp b/similar/main/automap.cpp index 4d42e75a3..2f7648b4f 100644 --- a/similar/main/automap.cpp +++ b/similar/main/automap.cpp @@ -240,7 +240,7 @@ static inline void ClearMarkers() static void DrawMarkerNumber (automap *am, int num) { int i; - g3s_point BasePoint,FromPoint,ToPoint; + g3s_point FromPoint,ToPoint; static const float sArrayX[10][20]={ {-.25, 0.0, 0.0, 0.0, -1.0, 1.0}, {-1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0}, @@ -279,7 +279,7 @@ static void DrawMarkerNumber (automap *am, int num) gr_setcolor (am->blue_48); - g3_rotate_point(BasePoint,Objects[MarkerObject[(Player_num*2)+num]].pos); + const auto BasePoint = g3_rotate_point(Objects[MarkerObject[(Player_num*2)+num]].pos); for (i=0;ipos); + auto sphere_point = g3_rotate_point(obj->pos); g3_draw_sphere(sphere_point,obj->size); // Draw shaft of arrow - { const auto arrow_pos = vm_vec_scale_add(obj->pos, obj->orient.fvec, obj->size*3 ); - g3_rotate_point(arrow_point,arrow_pos); + auto arrow_point = g3_rotate_point(arrow_pos); automap_draw_line(sphere_point, arrow_point); - } // Draw right head of arrow const auto head_pos = vm_vec_scale_add(obj->pos, obj->orient.fvec, obj->size*2 ); { auto rhead_pos = vm_vec_scale_add( head_pos, obj->orient.rvec, obj->size*1 ); - g3_rotate_point(head_point,rhead_pos); + auto head_point = g3_rotate_point(rhead_pos); automap_draw_line(arrow_point, head_point); } // Draw left head of arrow { auto lhead_pos = vm_vec_scale_add( head_pos, obj->orient.rvec, obj->size*(-1) ); - g3_rotate_point(head_point,lhead_pos); + auto head_point = g3_rotate_point(lhead_pos); automap_draw_line(arrow_point, head_point); } // Draw player's up vector { const auto arrow_pos = vm_vec_scale_add(obj->pos, obj->orient.uvec, obj->size*2 ); - g3_rotate_point(arrow_point,arrow_pos); + auto arrow_point = g3_rotate_point(arrow_pos); automap_draw_line(sphere_point, arrow_point); } } @@ -491,7 +485,6 @@ static void draw_automap(automap *am) { int i; int color; - g3s_point sphere_point; if ( am->leave_mode==0 && am->controls.state.automap && (timer_query()-am->entry_time)>LEAVE_TIME) am->leave_mode = 1; @@ -575,8 +568,10 @@ static void draw_automap(automap *am) switch( objp->type ) { case OBJ_HOSTAGE: gr_setcolor(am->hostage_color); - g3_rotate_point(sphere_point,objp->pos); + { + auto sphere_point = g3_rotate_point(objp->pos); g3_draw_sphere(sphere_point,objp->size); + } break; case OBJ_POWERUP: if (Automap_visited[objp->segnum] || Automap_debug_show_all_segments) @@ -590,8 +585,10 @@ static void draw_automap(automap *am) gr_setcolor(BM_XRGB(63, 63, 10)); else break; - g3_rotate_point(sphere_point,objp->pos); + { + auto sphere_point = g3_rotate_point(objp->pos); g3_draw_sphere(sphere_point,objp->size*4); + } } break; } diff --git a/similar/main/endlevel.cpp b/similar/main/endlevel.cpp index 53beb1e13..edec65033 100644 --- a/similar/main/endlevel.cpp +++ b/similar/main/endlevel.cpp @@ -965,9 +965,9 @@ static void render_external_scene(fix eye_offset) { //draw satellite vms_vector delta; - g3s_point p,top_pnt; + g3s_point top_pnt; - g3_rotate_point(p,satellite_pos); + const auto p = g3_rotate_point(satellite_pos); g3_rotate_delta_vec(delta,satellite_upvec); g3_add_delta_vec(top_pnt,p,delta); diff --git a/similar/main/gauges.cpp b/similar/main/gauges.cpp index d7b66b65a..d0abce10b 100644 --- a/similar/main/gauges.cpp +++ b/similar/main/gauges.cpp @@ -2839,9 +2839,7 @@ void show_HUD_names() if ((show_name || show_typing || show_indi) && see_object(objnum)) { - g3s_point player_point; - g3_rotate_point(player_point,Objects[objnum].pos); - + auto player_point = g3_rotate_point(Objects[objnum].pos); if (player_point.p3_codes == 0) //on screen { g3_project_point(player_point); diff --git a/similar/main/object.cpp b/similar/main/object.cpp index 6b32857b8..8dfd0109b 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -214,9 +214,6 @@ void draw_object_blob(object &obj,bitmap_index bmi) void draw_object_tmap_rod(const vobjptridx_t obj,const bitmap_index bitmapi,int lighted) { g3s_lrgb light; - - g3s_point top_p,bot_p; - PIGGY_PAGE_IN(bitmapi); auto &bitmap = GameBitmaps[bitmapi.index]; @@ -229,8 +226,8 @@ void draw_object_tmap_rod(const vobjptridx_t obj,const bitmap_index bitmapi,int const auto top_v = vm_vec_add(obj->pos,delta); const auto bot_v = vm_vec_sub(obj->pos,delta); - g3_rotate_point(top_p,top_v); - g3_rotate_point(bot_p,bot_v); + const auto top_p = g3_rotate_point(top_v); + const auto bot_p = g3_rotate_point(bot_v); if (lighted) { @@ -626,10 +623,7 @@ objnum_t Player_fired_laser_this_frame=object_none; static void set_robot_location_info(const vobjptr_t objp) { if (Player_fired_laser_this_frame != object_none) { - g3s_point temp; - - g3_rotate_point(temp,objp->pos); - + const auto temp = g3_rotate_point(objp->pos); if (temp.p3_codes & CC_BEHIND) //robot behind the screen return; diff --git a/similar/main/terrain.cpp b/similar/main/terrain.cpp index 5abd8d0a6..800bdddad 100644 --- a/similar/main/terrain.cpp +++ b/similar/main/terrain.cpp @@ -163,7 +163,7 @@ static int im=1; void render_terrain(const vms_vector &org_point,int org_2dx,int org_2dy) { vms_vector delta_i,delta_j; //delta_y; - g3s_point p,last_p,save_p_low,save_p_high; + g3s_point p,save_p_low,save_p_high; g3s_point last_p2; int i,j; int low_i,high_i,low_j,high_j; @@ -200,7 +200,7 @@ void render_terrain(const vms_vector &org_point,int org_2dx,int org_2dy) viewer_j = vm_vec_dot(tv,surface_orient.fvec) / GRID_SCALE; } - g3_rotate_point(last_p,start_point); + auto last_p = g3_rotate_point(start_point); save_p_low = last_p; g3s_point save_row[GRID_MAX_SIZE]{};