10 |
|
(c) Lucerne University of Applied Sciences and Arts, |
11 |
|
supported by the Swiss National Science Foundation (SNSF, #147053) |
12 |
|
================================================================== |
13 |
< |
|
14 |
< |
$Id$ |
13 |
> |
|
14 |
|
*/ |
15 |
|
|
16 |
|
|
525 |
|
/* Find geometry declared as photon ports */ |
526 |
|
{ |
527 |
|
OBJECT i; |
528 |
< |
OBJREC* obj; |
528 |
> |
OBJREC *obj, *mat; |
529 |
|
|
530 |
|
/* Check for missing port modifiers */ |
531 |
|
if (!ambset [0]) |
532 |
< |
error(USER, "no photon ports found"); |
532 |
> |
error(USER, "no photon ports"); |
533 |
|
|
534 |
|
for (i = 0; i < nobjects; i++) { |
535 |
|
obj = objptr(i); |
536 |
+ |
mat = findmaterial(obj); |
537 |
|
|
538 |
< |
if (inset(ambset, obj -> omod)) { |
538 |
> |
/* Check if object is a surface and NOT a light source (duh) and |
539 |
> |
* resolve its material via any aliases, then check for inclusion in |
540 |
> |
* port modifier list */ |
541 |
> |
if (issurface(obj -> otype) && mat && !islight(mat -> otype) && |
542 |
> |
inset(ambset, objndx(mat))) { |
543 |
|
/* Add photon port */ |
544 |
|
photonPorts = (SRCREC*)realloc(photonPorts, |
545 |
|
(numPhotonPorts + 1) * |
557 |
|
numPhotonPorts++; |
558 |
|
} |
559 |
|
} |
560 |
+ |
|
561 |
+ |
if (!numPhotonPorts) |
562 |
+ |
error(USER, "no valid photon ports found"); |
563 |
|
} |
564 |
|
|
565 |
|
|