version 1.2 | | version 1.3 |
---|
| | |
* New home for find_vector_intersection() | | * New home for find_vector_intersection() |
* | | * |
* $Log$ | | * $Log$ |
| | * Revision 1.3 2000/06/25 08:34:29 sekmu |
| | * file-line for segfault info |
| | * |
* Revision 1.2 2000/01/19 04:48:36 sekmu | | * Revision 1.2 2000/01/19 04:48:36 sekmu |
* added debug info for illegal side type | | * added debug info for illegal side type |
* | | * |
| | |
//Assert(check_point_in_seg(p0,startseg,0).centermask==0); //start point not in seg | | //Assert(check_point_in_seg(p0,startseg,0).centermask==0); //start point not in seg |
| | |
// Viewer is not in segment as claimed, so say there is no hit. | | // Viewer is not in segment as claimed, so say there is no hit. |
if(!(get_seg_masks(fq->p0,fq->startseg,0).centermask==0)) { | | if(!(get_seg_masks(fq->p0,fq->startseg,0,__FILE__,__LINE__).centermask==0)) { |
| | |
hit_data->hit_type = HIT_BAD_P0; | | hit_data->hit_type = HIT_BAD_P0; |
hit_data->hit_pnt = *fq->p0; | | hit_data->hit_pnt = *fq->p0; |
| | |
| | |
hit_type = fvi_sub(&hit_pnt,&hit_seg2,fq->p0,fq->startseg,fq->p1,fq->rad,fq->thisobjnum,fq->ignore_obj_list,fq->flags,hit_data->seglist,&hit_data->n_segs,-2); | | hit_type = fvi_sub(&hit_pnt,&hit_seg2,fq->p0,fq->startseg,fq->p1,fq->rad,fq->thisobjnum,fq->ignore_obj_list,fq->flags,hit_data->seglist,&hit_data->n_segs,-2); |
//!!hit_seg = find_point_seg(&hit_pnt,fq->startseg); | | //!!hit_seg = find_point_seg(&hit_pnt,fq->startseg); |
if (hit_seg2!=-1 && !get_seg_masks(&hit_pnt,hit_seg2,0).centermask) | | if (hit_seg2!=-1 && !get_seg_masks(&hit_pnt,hit_seg2,0,__FILE__,__LINE__).centermask) |
hit_seg = hit_seg2; | | hit_seg = hit_seg2; |
else | | else |
hit_seg = find_point_seg(&hit_pnt,fq->startseg); | | hit_seg = find_point_seg(&hit_pnt,fq->startseg); |
| | |
//MATT: TAKE OUT THIS HACK AND FIX THE BUGS! | | //MATT: TAKE OUT THIS HACK AND FIX THE BUGS! |
if (hit_type == HIT_WALL && hit_seg==-1) | | if (hit_type == HIT_WALL && hit_seg==-1) |
if (fvi_hit_seg2!=-1 && get_seg_masks(&hit_pnt,fvi_hit_seg2,0).centermask==0) | | if (fvi_hit_seg2!=-1 && get_seg_masks(&hit_pnt,fvi_hit_seg2,0,__FILE__,__LINE__).centermask==0) |
hit_seg = fvi_hit_seg2; | | hit_seg = fvi_hit_seg2; |
| | |
if (hit_seg == -1) { | | if (hit_seg == -1) { |
| | |
hit_data->hit_object = fvi_hit_object; //looks at global | | hit_data->hit_object = fvi_hit_object; //looks at global |
hit_data->hit_wallnorm = wall_norm; //looks at global | | hit_data->hit_wallnorm = wall_norm; //looks at global |
| | |
// if(hit_seg!=-1 && get_seg_masks(&hit_data->hit_pnt,hit_data->hit_seg,0).centermask!=0) | | // if(hit_seg!=-1 && get_seg_masks(&hit_data->hit_pnt,hit_data->hit_seg,0,__FILE__,__LINE__).centermask!=0) |
// Int3(); | | // Int3(); |
| | |
return hit_type; | | return hit_type; |
| | |
| | |
//now, check segment walls | | //now, check segment walls |
| | |
startmask = get_seg_masks(p0,startseg,rad).facemask; | | startmask = get_seg_masks(p0,startseg,rad,__FILE__,__LINE__).facemask; |
| | |
masks = get_seg_masks(p1,startseg,rad); //on back of which faces? | | masks = get_seg_masks(p1,startseg,rad,__FILE__,__LINE__); //on back of which faces? |
endmask = masks.facemask; | | endmask = masks.facemask; |
//@@sidemask = masks.sidemask; | | //@@sidemask = masks.sidemask; |
centermask = masks.centermask; | | centermask = masks.centermask; |
| | |
#endif | | #endif |
| | |
| | |
if (get_seg_masks(&hit_point,startseg,rad).centermask==0) | | if (get_seg_masks(&hit_point,startseg,rad,__FILE__,__LINE__).centermask==0) |
hit_seg = startseg; //hit in this segment | | hit_seg = startseg; //hit in this segment |
else | | else |
fvi_hit_seg2 = startseg; | | fvi_hit_seg2 = startseg; |
| | |
| | |
segs_visited[n_segs_visited++] = segnum; | | segs_visited[n_segs_visited++] = segnum; |
| | |
facemask = get_seg_masks(pnt,segnum,rad).facemask; | | facemask = get_seg_masks(pnt,segnum,rad,__FILE__,__LINE__).facemask; |
| | |
seg = &Segments[segnum]; | | seg = &Segments[segnum]; |
| | |