| 21 |
|
|
| 22 |
|
#include "copyright.h" |
| 23 |
|
|
| 24 |
< |
#include "ray.h" |
| 24 |
> |
#include <string.h> |
| 25 |
|
|
| 26 |
+ |
#include "ray.h" |
| 27 |
|
#include "mesh.h" |
| 27 |
– |
|
| 28 |
|
#include "tmesh.h" |
| 29 |
+ |
#include "rtotypes.h" |
| 30 |
|
|
| 31 |
|
|
| 32 |
|
#define EDGE_CACHE_SIZ 251 /* length of mesh edge cache */ |
| 53 |
|
/* get mesh instance */ |
| 54 |
|
edge_cache.mi = getmeshinst(edge_cache.o = o, IO_ALL); |
| 55 |
|
/* clear edge cache */ |
| 56 |
< |
bzero((void *)edge_cache.cache, sizeof(edge_cache.cache)); |
| 56 |
> |
memset((void *)edge_cache.cache, '\0', sizeof(edge_cache.cache)); |
| 57 |
|
} |
| 58 |
|
|
| 59 |
|
|
| 145 |
|
} |
| 146 |
|
|
| 147 |
|
|
| 148 |
< |
int |
| 149 |
< |
o_mesh(o, r) /* compute ray intersection with a mesh */ |
| 150 |
< |
OBJREC *o; |
| 151 |
< |
register RAY *r; |
| 148 |
> |
extern int |
| 149 |
> |
o_mesh( /* compute ray intersection with a mesh */ |
| 150 |
> |
OBJREC *o, |
| 151 |
> |
register RAY *r |
| 152 |
> |
) |
| 153 |
|
{ |
| 154 |
|
RAY rcont; |
| 155 |
|
int flags; |
| 160 |
|
/* get the mesh instance */ |
| 161 |
|
prep_edge_cache(o); |
| 162 |
|
/* copy and transform ray */ |
| 163 |
< |
copystruct(&rcont, r); |
| 163 |
> |
rcont = *r; |
| 164 |
|
multp3(rcont.rorg, r->rorg, curmi->x.b.xfm); |
| 165 |
|
multv3(rcont.rdir, r->rdir, curmi->x.b.xfm); |
| 166 |
|
for (i = 0; i < 3; i++) |