Tightened up the setting of the Member property of Texture attributes

This commit is contained in:
Robert Osfield 2018-08-08 07:34:14 +01:00
parent 985e82049f
commit 6d0b8c4693

View File

@ -1459,10 +1459,10 @@ void StateSet::setTextureAttribute(unsigned int unit,StateAttribute *attribute,
{ {
if (attribute->isTextureAttribute()) if (attribute->isTextureAttribute())
{ {
setAttribute(getOrCreateTextureAttributeList(unit),attribute,value);
TextureAttribute* ta = dynamic_cast<TextureAttribute*>(attribute); TextureAttribute* ta = dynamic_cast<TextureAttribute*>(attribute);
if (ta) ta->setTextureUnit(unit); if (ta) ta->setTextureUnit(unit);
setAttribute(getOrCreateTextureAttributeList(unit),attribute,value);
} }
else else
{ {
@ -1488,11 +1488,11 @@ void StateSet::setTextureAttributeAndModes(unsigned int unit,StateAttribute *att
} }
else else
{ {
setAttribute(getOrCreateTextureAttributeList(unit),attribute,value);
setAssociatedTextureModes(unit,attribute,value);
TextureAttribute* ta = dynamic_cast<TextureAttribute*>(attribute); TextureAttribute* ta = dynamic_cast<TextureAttribute*>(attribute);
if (ta) ta->setTextureUnit(unit); if (ta) ta->setTextureUnit(unit);
setAttribute(getOrCreateTextureAttributeList(unit),attribute,value);
setAssociatedTextureModes(unit,attribute,value);
} }
} }
else else
@ -1565,27 +1565,27 @@ void StateSet::removeTextureAttribute(unsigned int unit, StateAttribute* attribu
StateAttribute* StateSet::getTextureAttribute(unsigned int unit,StateAttribute::Type type) StateAttribute* StateSet::getTextureAttribute(unsigned int unit,StateAttribute::Type type)
{ {
if (unit>=_textureAttributeList.size()) return 0; if (unit>=_textureAttributeList.size()) return 0;
return getAttribute(_textureAttributeList[unit],type,0); return getAttribute(_textureAttributeList[unit],type,unit);
} }
const StateAttribute* StateSet::getTextureAttribute(unsigned int unit,StateAttribute::Type type) const const StateAttribute* StateSet::getTextureAttribute(unsigned int unit,StateAttribute::Type type) const
{ {
if (unit>=_textureAttributeList.size()) return 0; if (unit>=_textureAttributeList.size()) return 0;
return getAttribute(_textureAttributeList[unit],type,0); return getAttribute(_textureAttributeList[unit],type,unit);
} }
StateSet::RefAttributePair* StateSet::getTextureAttributePair(unsigned int unit, StateAttribute::Type type) StateSet::RefAttributePair* StateSet::getTextureAttributePair(unsigned int unit, StateAttribute::Type type)
{ {
if (unit>=_textureAttributeList.size()) return 0; if (unit>=_textureAttributeList.size()) return 0;
return getAttributePair(_textureAttributeList[unit],type,0); return getAttributePair(_textureAttributeList[unit],type,unit);
} }
const StateSet::RefAttributePair* StateSet::getTextureAttributePair(unsigned int unit, StateAttribute::Type type) const const StateSet::RefAttributePair* StateSet::getTextureAttributePair(unsigned int unit, StateAttribute::Type type) const
{ {
if (unit>=_textureAttributeList.size()) return 0; if (unit>=_textureAttributeList.size()) return 0;
return getAttributePair(_textureAttributeList[unit],type,0); return getAttributePair(_textureAttributeList[unit],type,unit);
} }
bool StateSet::checkValidityOfAssociatedModes(osg::State& state) const bool StateSet::checkValidityOfAssociatedModes(osg::State& state) const