<div dir="ltr"><div><div><div><div><div>Hi Julien,<br><br></div>I don't recall the why and wherefores of this particular bit of code in StateSet.cpp (i.e. line 1662 and associated code) but it's a loooong time since I wrote it ;-)<br><br></div>My best guess right now is that the ON/OFF for StateAttribute doesn't affect anything, a StateAttribute isn't like a GL Mode that can be switched on/off. All you can do with a StateAttribute is call it or not, and if you don't want to call it you remove it from the StateSet.  This means all StateAttribute attached to StateSet are implicitly ON if you wanted to think it about a mode but in the end it's not a mode so it's probably best not to try and treat it like one.<br><br></div>In the case of the StateSet API we reuse the OverrideValue as a bit mask so it's used for the mode ON/OFF and the OVERRIDE and PROTECTED switches.  The ON/OFF is only relevant to store for the Mode which StateAttribute and Uniform's only the OVERRIDE and PROTECTED are significant to store.<br><br></div>Does this make sense?<br></div>Robert.<br><div><div><div><div><br></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 9 September 2015 at 18:45, Julien Valentin <span dir="ltr"><<a href="mailto:julienvalentin51@gmail.com" target="_blank">julienvalentin51@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
Iwould like to introspect StateSet in order to know which override value is activated for a particular stateset.<br>
I parse AttributeList for this<br>
<br>
Code:<br>
for( osg::StateSet::AttributeList::const_iterator it=ss->getAttributeList().begin();it!=ss->getAttributeList().end() ; it++)<br>
{<br>
            if((*it).second.first ==stateattribute)<br>
            {<br>
                if( (*it).second.second & osg::StateAttribute::ON)<br>
                return(1);<br>
                else return(0);<br>
}<br>
<br>
<br>
<br>
but according to StateSet.cpp l.1662<br>
<br>
Code:<br>
attributeList[attribute->getTypeMemberPair()] = RefAttributePair(attribute,value&(StateAttribute::OVERRIDE|StateAttribute::PROTECTED));<br>
<br>
<br>
<br>
the ON OFF bit is removed from the given user value. So I can't determine if an osg::Attribute is ON or OFF but only if it's OVERRIDE or PROTECTED<br>
I would like to know if there's a known reason behind this logic & and further if you know a mean to retrieve the ON/OFF bit.<br>
<br>
Thank you!<br>
<br>
Cheers,<br>
Julien<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=65081#65081" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=65081#65081</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br></div>