main/fvi.c File Reference

#include <stdlib.h>
#include <string.h>
#include "error.h"
#include "mono.h"
#include "inferno.h"
#include "fvi.h"
#include "segment.h"
#include "object.h"
#include "wall.h"
#include "laser.h"
#include "rle.h"
#include "robot.h"
#include "piggy.h"
#include "player.h"
#include "fix.h"
#include "fvi_a.h"
#include "u_mem.h"
#include "textures.h"
#include "texmerge.h"

Classes

struct  vec2d

Defines

#define NEW_FVI_STUFF   1
#define face_type_num(nfaces, face_num, tri_edge)   ((nfaces==1)?0:(tri_edge*2 + face_num))
#define IT_NONE   0
#define IT_FACE   1
#define IT_EDGE   2
#define IT_POINT   3
#define MAX_SEGS_VISITED   100
#define cross(v0, v1)   (fixmul((v0)->i,(v1)->j) - fixmul((v0)->j,(v1)->i))

Functions

int find_plane_line_intersection (vms_vector *new_pnt, vms_vector *plane_pnt, vms_vector *plane_norm, vms_vector *p0, vms_vector *p1, fix rad)
uint check_point_to_face (vms_vector *checkp, segment *sp, side *s, int facenum, int nv, int *vertex_list)
int check_sphere_to_face (vms_vector *pnt, segment *sp, side *s, int facenum, int nv, fix rad, int *vertex_list)
int check_line_to_face (vms_vector *newp, vms_vector *p0, vms_vector *p1, segment *seg, int side, int facenum, int nv, fix rad)
fix calc_det_value (vms_matrix *det)
int check_line_to_line (fix *t1, fix *t2, vms_vector *p1, vms_vector *v1, vms_vector *p2, vms_vector *v2)
int special_check_line_to_face (vms_vector *newp, vms_vector *p0, vms_vector *p1, segment *seg, int side, int facenum, int nv, fix rad)
int check_vector_to_sphere_1 (vms_vector *intp, vms_vector *p0, vms_vector *p1, vms_vector *sphere_pos, fix sphere_rad)
fix check_vector_to_object (vms_vector *intp, vms_vector *p0, vms_vector *p1, fix rad, object *obj, object *otherobj)
int fvi_sub (vms_vector *intp, int *ints, vms_vector *p0, int startseg, vms_vector *p1, fix rad, short thisobjnum, int *ignore_obj_list, int flags, int *seglist, int *n_segs, int entry_seg)
int find_vector_intersection (fvi_query *fq, fvi_info *hit_data)
int obj_in_list (int objnum, int *obj_list)
int check_trans_wall (vms_vector *pnt, segment *seg, int sidenum, int facenum)
void find_hitpoint_uv (fix *u, fix *v, vms_vector *pnt, segment *seg, int sidenum, int facenum)
int sphere_intersects_wall (vms_vector *pnt, int segnum, fix rad)
int object_intersects_wall (object *objp)

Variables

int Physics_cheat_flag
int ij_table [3][2]
int disable_new_fvi_stuff = 0
int n_segs_visited
short segs_visited [MAX_SEGS_VISITED]
int fvi_nest_count
int fvi_hit_object
int fvi_hit_seg
int fvi_hit_side
int fvi_hit_side_seg
vms_vector wall_norm
int fvi_hit_seg2

Define Documentation

#define cross v0,
v1   )     (fixmul((v0)->i,(v1)->j) - fixmul((v0)->j,(v1)->i))
 

#define face_type_num nfaces,
face_num,
tri_edge   )     ((nfaces==1)?0:(tri_edge*2 + face_num))
 

#define IT_EDGE   2
 

#define IT_FACE   1
 

#define IT_NONE   0
 

#define IT_POINT   3
 

#define MAX_SEGS_VISITED   100
 

#define NEW_FVI_STUFF   1
 


Function Documentation

fix calc_det_value vms_matrix det  ) 
 

int check_line_to_face vms_vector newp,
vms_vector p0,
vms_vector p1,
segment seg,
int  side,
int  facenum,
int  nv,
fix  rad
 

int check_line_to_line fix t1,
fix t2,
vms_vector p1,
vms_vector v1,
vms_vector p2,
vms_vector v2
 

uint check_point_to_face vms_vector checkp,
segment sp,
side s,
int  facenum,
int  nv,
int *  vertex_list
 

int check_sphere_to_face vms_vector pnt,
segment sp,
side s,
int  facenum,
int  nv,
fix  rad,
int *  vertex_list
 

int check_trans_wall vms_vector pnt,
segment seg,
int  sidenum,
int  facenum
 

fix check_vector_to_object vms_vector intp,
vms_vector p0,
vms_vector p1,
fix  rad,
object obj,
object otherobj
 

int check_vector_to_sphere_1 vms_vector intp,
vms_vector p0,
vms_vector p1,
vms_vector sphere_pos,
fix  sphere_rad
 

void find_hitpoint_uv fix u,
fix v,
vms_vector pnt,
segment seg,
int  sidenum,
int  facenum
 

int find_plane_line_intersection vms_vector new_pnt,
vms_vector plane_pnt,
vms_vector plane_norm,
vms_vector p0,
vms_vector p1,
fix  rad
 

int find_vector_intersection fvi_query fq,
fvi_info hit_data
 

!hit_seg = find_point_seg(&hit_pnt,fq->startseg);

! Assert(hit_seg!=-1); ! Assert(!((hit_type==HIT_WALL) && (hit_seg == -1)));

int fvi_sub vms_vector intp,
int *  ints,
vms_vector p0,
int  startseg,
vms_vector p1,
fix  rad,
short  thisobjnum,
int *  ignore_obj_list,
int  flags,
int *  seglist,
int *  n_segs,
int  entry_seg
 

(centermask == 0)

int obj_in_list int  objnum,
int *  obj_list
 

int object_intersects_wall object objp  ) 
 

int special_check_line_to_face vms_vector newp,
vms_vector p0,
vms_vector p1,
segment seg,
int  side,
int  facenum,
int  nv,
fix  rad
 

int sphere_intersects_wall vms_vector pnt,
int  segnum,
fix  rad
 


Variable Documentation

int disable_new_fvi_stuff = 0
 

int fvi_hit_object
 

int fvi_hit_seg
 

int fvi_hit_seg2
 

int fvi_hit_side
 

int fvi_hit_side_seg
 

int fvi_nest_count
 

int ij_table[3][2]
 

Initial value:

        {
                                                        {2,1},          
                                                        {0,2},          
                                                        {1,0},          
                                                }

int n_segs_visited
 

int Physics_cheat_flag
 

short segs_visited[MAX_SEGS_VISITED]
 

vms_vector wall_norm
 


Generated on Mon Aug 28 20:55:32 2006 for D1X-Rebirth by  doxygen 1.4.6