81 |
|
if (m->otype == MAT_GLOW) { |
82 |
|
source[ns].sflags |= SPROX; |
83 |
|
source[ns].sl.prox = m->oargs.farg[3]; |
84 |
< |
if (o->otype == OBJ_SOURCE) |
84 |
> |
if (source[ns].sflags & SDISTANT) |
85 |
|
source[ns].sflags |= SSKIP; |
86 |
|
} else if (m->otype == MAT_SPOT) { |
87 |
|
source[ns].sflags |= SSPOT; |
383 |
|
*/ |
384 |
|
|
385 |
|
#define distglow(m, r) (m->otype==MAT_GLOW && \ |
386 |
+ |
m->oargs.farg[3] >= -FTINY && \ |
387 |
|
r->rot > m->oargs.farg[3]) |
388 |
|
|
389 |
|
/* badcomponent * |
419 |
|
|
420 |
|
/* srcignore * |
421 |
|
* |
422 |
< |
* The -di flag renders light sources invisible, and here is the test. |
422 |
> |
* The -dv flag is normally on for sources to be visible. |
423 |
|
*/ |
424 |
|
|
425 |
< |
#define srcignore(m, r) (directinvis && !(r->crtype&SHADOW) && \ |
425 |
> |
#define srcignore(m, r) (!directvis && !(r->crtype&SHADOW) && \ |
426 |
|
!distglow(m, r)) |
427 |
|
|
428 |
|
|
449 |
|
if (srcignore(m, r)) |
450 |
|
return; |
451 |
|
/* check for outside spot */ |
452 |
< |
if (m->otype==MAT_SPOT && spotout(r, (SPOT *)m->os, r->rot>=FHUGE)) |
452 |
> |
if (m->otype==MAT_SPOT && spotout(r, makespot(m), r->rot>=FHUGE)) |
453 |
|
return; |
454 |
|
/* get distribution pattern */ |
455 |
|
raytexture(r, m->omod); |