+ using namespace osg;
+ ref_ptr<SGReaderWriterXMLOptions> xmlOptions;
+ if (options)
+ xmlOptions = new SGReaderWriterXMLOptions(*options);
+ ref_ptr<SGMaterialUserData> user = new SGMaterialUserData(this);
+ SGPropertyNode_ptr propRoot = new SGPropertyNode();
+ makeChild(propRoot, "inherits-from")->setStringValue(effect);
+ SGPropertyNode* paramProp = makeChild(propRoot, "parameters");
+ SGPropertyNode* materialProp = makeChild(paramProp, "material");
+ makeChild(materialProp, "ambient")->setValue(SGVec4d(ambient));
+ makeChild(materialProp, "diffuse")->setValue(SGVec4d(diffuse));
+ makeChild(materialProp, "specular")->setValue(SGVec4d(specular));
+ makeChild(materialProp, "emissive")->setValue(SGVec4d(emission));
+ makeChild(materialProp, "shininess")->setFloatValue(shininess);
+ if (ambient[3] < 1 || diffuse[3] < 1 ||
+ specular[3] < 1 || emission[3] < 1) {
+ makeChild(paramProp, "transparent")->setBoolValue(true);
+ SGPropertyNode* binProp = makeChild(paramProp, "render-bin");
+ makeChild(binProp, "bin-number")->setIntValue(TRANSPARENT_BIN);
+ makeChild(binProp, "bin-name")->setStringValue("DepthSortedBin");
+ }
+ BOOST_FOREACH(_internal_state& matState, _status)