RefResult CompositeMat::NotifyRefChanged( Interval changeInt, RefTargetHandle hTarget, PartID& partID, RefMessage message) { switch (message) { case REFMSG_CHANGE: if (hTarget == pblock2) { ivalid.SetEmpty(); // compmat_param_blk.InvalidateUI(); ParamID changing_param = pblock2->LastNotifyParamID(); compmat_param_blk.InvalidateUI(changing_param); if( (changing_param == compmat_amount ) ||(changing_param == compmat_map_on ) ||(changing_param == compmat_type )) { mReshadeRQ = RR_NeedReshade; } else if( changing_param == compmat_mtls ) { mReshadeRQ = RR_NeedPreshade; // really want to get from mtl, but dont have it // NotifyChanged(); } } else { ivalid.SetEmpty(); NotifyChanged(); } if (hTarget != NULL) { switch (hTarget->SuperClassID()) { case MATERIAL_CLASS_ID: { // never hit for this mtl ???? IReshading* r = static_cast<IReshading*>(hTarget->GetInterface(IID_IReshading)); mReshadeRQ = r == NULL ? RR_None : r->GetReshadeRequirements(); } break; } } break; case REFMSG_SUBANIM_STRUCTURE_CHANGED: if ((hTarget!=this)) return REF_SUCCEED; mReshadeRQ = RR_NeedPreshade; NotifyChanged(); break; } return REF_SUCCEED; }
RefResult M3Mat::NotifyRefChanged( Interval changeInt, RefTargetHandle hTarget, PartID& partID, RefMessage message) { switch (message) { case REFMSG_CHANGE: if (matDlg && matDlg->theMtl==this) { matDlg->Invalidate(); } if( hTarget == pblockMat ){ mReshadeRQ = RR_NeedPreshade; NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); } else if (hTarget != NULL) { switch (hTarget->SuperClassID()) { case MATERIAL_CLASS_ID: { IReshading* r = static_cast<IReshading*>(hTarget->GetInterface(IID_IReshading)); mReshadeRQ = (r == NULL)? RR_None : r->GetReshadeRequirements(); } break; } } break; case REFMSG_SUBANIM_STRUCTURE_CHANGED: mReshadeRQ = RR_NeedPreshade; NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE); break; case REFMSG_GET_PARAM_DIM: { GetParamDim *gpd = (GetParamDim*)partID; gpd->dim = stdPercentDim; return REF_STOP; } case REFMSG_GET_PARAM_NAME: { GetParamName *gpn = (GetParamName*)partID; char s[50]; sprintf(s,GetString(IDS_MTL_CNAME),gpn->index); gpn->name = s; return REF_STOP; } } return REF_SUCCEED; }