Move fvi.cpp fvi_hit_side out of global scope

This commit is contained in:
Kp 2018-03-05 01:40:44 +00:00
parent f640917052
commit 7ffd54377c

View file

@ -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<const objnum_t *, const objnum_t *> 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<const objnum_t *, const objnum_t *> 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<const objnum_t *, const objnum_t *> 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<const objnum_t *, const objnum_t *> 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) {