From 7ffd54377cf8534206656d7236085fa6590a67c6 Mon Sep 17 00:00:00 2001 From: Kp Date: Mon, 5 Mar 2018 01:40:44 +0000 Subject: [PATCH] Move fvi.cpp fvi_hit_side out of global scope --- similar/main/fvi.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/similar/main/fvi.cpp b/similar/main/fvi.cpp index 01eafcd4f..d581f3565 100644 --- a/similar/main/fvi.cpp +++ b/similar/main/fvi.cpp @@ -611,14 +611,13 @@ struct fvi_segments_visited_t : public fvi_segment_visit_count_t, public visited //these vars are used to pass vars from fvi_sub() to find_vector_intersection() objnum_t fvi_hit_object; // object number of object hit in last find_vector_intersection call. -int fvi_hit_side; // what side was hit segnum_t fvi_hit_side_seg;// what seg the hitside is in segnum_t fvi_hit_seg2; // what segment the hit point is in } namespace dsx { -static int fvi_sub(vms_vector &intp, segnum_t &ints, const vms_vector &p0, const vcsegptridx_t startseg, const vms_vector &p1, fix rad, const icobjptridx_t thisobjnum, const std::pair ignore_obj_list, int flags, fvi_info::segment_array_t &seglist, segnum_t entry_seg, fvi_segments_visited_t &visited, unsigned &fvi_nest_count, const vms_vector *&wall_norm); +static int fvi_sub(vms_vector &intp, segnum_t &ints, const vms_vector &p0, const vcsegptridx_t startseg, const vms_vector &p1, fix rad, const icobjptridx_t thisobjnum, const std::pair ignore_obj_list, int flags, fvi_info::segment_array_t &seglist, segnum_t entry_seg, fvi_segments_visited_t &visited, unsigned &fvi_hit_side, unsigned &fvi_nest_count, const vms_vector *&wall_norm); //What the hell is fvi_hit_seg for??? @@ -638,7 +637,6 @@ int find_vector_intersection(const fvi_query &fq, fvi_info &hit_data) int hit_type; segnum_t hit_seg2; vms_vector hit_pnt; - fvi_hit_side = -1; fvi_hit_object = object_none; @@ -673,12 +671,13 @@ int find_vector_intersection(const fvi_query &fq, fvi_info &hit_data) fvi_segments_visited_t visited; visited[fq.startseg] = true; + unsigned fvi_hit_side = ~0u; unsigned fvi_nest_count = 0; hit_seg2 = fvi_hit_seg2 = segment_none; const vms_vector *wall_norm = nullptr; //surface normal of hit wall - hit_type = fvi_sub(hit_pnt, hit_seg2, *fq.p0, vcsegptridx(fq.startseg), *fq.p1, fq.rad, imobjptridx(fq.thisobjnum), fq.ignore_obj_list, fq.flags, hit_data.seglist, segment_exit, visited, fvi_nest_count, wall_norm); + hit_type = fvi_sub(hit_pnt, hit_seg2, *fq.p0, vcsegptridx(fq.startseg), *fq.p1, fq.rad, imobjptridx(fq.thisobjnum), fq.ignore_obj_list, fq.flags, hit_data.seglist, segment_exit, visited, fvi_hit_side, fvi_nest_count, wall_norm); segnum_t hit_seg; if (hit_seg2 != segment_none && !get_seg_masks(vcvertptr, hit_pnt, vcsegptr(hit_seg2), 0).centermask) hit_seg = hit_seg2; @@ -698,7 +697,7 @@ int find_vector_intersection(const fvi_query &fq, fvi_info &hit_data) //because of code that deal with object with non-zero radius has //problems, try using zero radius and see if we hit a wall - new_hit_type = fvi_sub(new_hit_pnt, new_hit_seg2, *fq.p0, vcsegptridx(fq.startseg), *fq.p1, 0, imobjptridx(fq.thisobjnum), fq.ignore_obj_list, fq.flags, hit_data.seglist, segment_exit, visited, fvi_nest_count, wall_norm); + new_hit_type = fvi_sub(new_hit_pnt, new_hit_seg2, *fq.p0, vcsegptridx(fq.startseg), *fq.p1, 0, imobjptridx(fq.thisobjnum), fq.ignore_obj_list, fq.flags, hit_data.seglist, segment_exit, visited, fvi_hit_side, fvi_nest_count, wall_norm); (void)new_hit_type; // FIXME! This should become hit_type, right? if (new_hit_seg2 != segment_none) { @@ -792,7 +791,7 @@ static void append_segments(fvi_info::segment_array_t &dst, const fvi_info::segm } namespace dsx { -static int fvi_sub(vms_vector &intp, segnum_t &ints, const vms_vector &p0, const vcsegptridx_t startseg, const vms_vector &p1, fix rad, icobjptridx_t thisobjnum, const std::pair ignore_obj_list, int flags, fvi_info::segment_array_t &seglist, segnum_t entry_seg, fvi_segments_visited_t &visited, unsigned &fvi_nest_count, const vms_vector *&wall_norm) +static int fvi_sub(vms_vector &intp, segnum_t &ints, const vms_vector &p0, const vcsegptridx_t startseg, const vms_vector &p1, fix rad, icobjptridx_t thisobjnum, const std::pair ignore_obj_list, int flags, fvi_info::segment_array_t &seglist, segnum_t entry_seg, fvi_segments_visited_t &visited, unsigned &fvi_hit_side, unsigned &fvi_nest_count, const vms_vector *&wall_norm) { int startmask,endmask; //mask of faces //@@int sidemask; //mask of sides - can be on back of face but not side @@ -963,7 +962,7 @@ static int fvi_sub(vms_vector &intp, segnum_t &ints, const vms_vector &p0, const goto quit_looking; //we've looked a long time, so give up fvi_info::segment_array_t temp_seglist; - sub_hit_type = fvi_sub(sub_hit_point, sub_hit_seg, p0, startseg.absolute_sibling(newsegnum), p1, rad, thisobjnum, ignore_obj_list, flags, temp_seglist, startseg, visited, fvi_nest_count, wall_norm); + sub_hit_type = fvi_sub(sub_hit_point, sub_hit_seg, p0, startseg.absolute_sibling(newsegnum), p1, rad, thisobjnum, ignore_obj_list, flags, temp_seglist, startseg, visited, fvi_hit_side, fvi_nest_count, wall_norm); if (sub_hit_type != HIT_NONE) {