//=======================================================================
-//function :
-//purpose :
+//function : SetMaterial
+//purpose :
//=======================================================================
-void AIS_InteractiveObject::SetMaterial(const Graphic3d_NameOfMaterial aName)
+void AIS_InteractiveObject::SetMaterial (const Graphic3d_NameOfMaterial theName)
{
- if( HasColor() || IsTransparent() || HasMaterial() )
- {
- myDrawer->ShadingAspect()->SetMaterial(aName);
- }
- else
+ if (!myDrawer->HasOwnShadingAspect())
{
- myDrawer->SetShadingAspect(new Prs3d_ShadingAspect());
- myDrawer->ShadingAspect()->SetMaterial(aName);
+ myDrawer->SetShadingAspect (new Prs3d_ShadingAspect());
+ if (myDrawer->HasLink())
+ {
+ *myDrawer->ShadingAspect()->Aspect() = *myDrawer->Link()->ShadingAspect()->Aspect();
+ }
}
- myOwnMaterial = aName;
+ myDrawer->ShadingAspect()->SetMaterial (theName);
+ myOwnMaterial = theName;
hasOwnMaterial = Standard_True;
}
//=======================================================================
void AIS_InteractiveObject::SetMaterial (const Graphic3d_MaterialAspect& theMaterial)
{
- if (!HasColor() && !IsTransparent() && !HasMaterial())
+ if (!myDrawer->HasOwnShadingAspect())
{
- myDrawer->SetShadingAspect (new Prs3d_ShadingAspect);
+ myDrawer->SetShadingAspect (new Prs3d_ShadingAspect());
+ if (myDrawer->HasLink())
+ {
+ *myDrawer->ShadingAspect()->Aspect() = *myDrawer->Link()->ShadingAspect()->Aspect();
+ }
}
-
myDrawer->ShadingAspect()->SetMaterial (theMaterial);
-
hasOwnMaterial = Standard_True;
}
//=======================================================================
void AIS_InteractiveObject::SetTransparency(const Standard_Real aValue)
{
- if(!HasColor() && !IsTransparent() && !HasMaterial())
+ if (!myDrawer->HasOwnShadingAspect())
{
myDrawer->SetShadingAspect(new Prs3d_ShadingAspect());
if(myDrawer->HasLink())