74 |
|
ofun[MAT_TDATA].funp = m_brdf2; |
75 |
|
ofun[MAT_PFUNC].flags |= T_OPAQUE; |
76 |
|
ofun[MAT_MFUNC].flags |= T_OPAQUE; |
77 |
+ |
ofun[MAT_TFUNC].flags |= T_OPAQUE; |
78 |
|
ofun[MAT_PDATA].flags |= T_OPAQUE; |
79 |
|
ofun[MAT_MDATA].flags |= T_OPAQUE; |
80 |
+ |
ofun[MAT_TDATA].flags |= T_OPAQUE; |
81 |
|
ofun[TEX_FUNC].funp = t_func; |
82 |
|
ofun[TEX_DATA].funp = t_data; |
83 |
|
ofun[PAT_CFUNC].funp = p_cfunc; |
101 |
|
/* unused call to load freeobjmem.o */ |
102 |
|
free_objs(0, 0); |
103 |
|
return(0); |
104 |
+ |
} |
105 |
+ |
|
106 |
+ |
|
107 |
+ |
|
108 |
+ |
OBJREC * /* find an object's actual material */ |
109 |
+ |
findmaterial(OBJREC *o) |
110 |
+ |
{ |
111 |
+ |
while (!ismaterial(o->otype)) { |
112 |
+ |
if (o->otype == MOD_ALIAS && o->oargs.nsargs) { |
113 |
+ |
OBJECT aobj; |
114 |
+ |
OBJREC *ao; |
115 |
+ |
aobj = lastmod(objndx(o), o->oargs.sarg[0]); |
116 |
+ |
if (aobj < 0) |
117 |
+ |
objerror(o, USER, "bad reference"); |
118 |
+ |
/* recursive check on alias branch */ |
119 |
+ |
if ((ao = findmaterial(objptr(aobj))) != NULL) |
120 |
+ |
return(ao); |
121 |
+ |
} |
122 |
+ |
if (o->omod == OVOID) |
123 |
+ |
return(NULL); |
124 |
+ |
o = objptr(o->omod); |
125 |
+ |
} |
126 |
+ |
return(o); /* XXX: material mixtures will return NULL */ |
127 |
|
} |