| 857 | } |
| 858 | |
| 859 | Parms XMLLoader::loadMaterialParms(const Ref<XML>& parms) |
| 860 | { |
| 861 | Parms material; |
| 862 | for (size_t i=0; i<parms->size(); i++) |
| 863 | { |
| 864 | Ref<XML> entry = parms->children[i]; |
| 865 | std::string name = entry->parm("name"); |
| 866 | if (entry->name == "int" ) { material.add(name, load<int> (entry)); } |
| 867 | else if (entry->name == "int2" ) { material.add(name, load<Vec2i>(entry)); } |
| 868 | else if (entry->name == "int3" ) { material.add(name, load<Vec3i>(entry)); } |
| 869 | else if (entry->name == "int4" ) { material.add(name, load<Vec4i>(entry)); } |
| 870 | else if (entry->name == "float" ) { material.add(name, load<float>(entry)); } |
| 871 | else if (entry->name == "float2" ) { material.add(name, load<Vec2f>(entry)); } |
| 872 | else if (entry->name == "float3" ) { material.add(name, load<Vec3f>(entry)); } |
| 873 | else if (entry->name == "float4" ) { material.add(name, load<Vec4f>(entry)); } |
| 874 | else if (entry->name == "texture3d") { material.add(name, loadTextureParm(entry)); } |
| 875 | else if (entry->name == "param") { |
| 876 | const std::string type = entry->parm("type"); |
| 877 | if (type == "int" ) { material.add(name, load<int> (entry)); } |
| 878 | else if (type == "int2" ) { material.add(name, load<Vec2i>(entry)); } |
| 879 | else if (type == "int3" ) { material.add(name, load<Vec3i>(entry)); } |
| 880 | else if (type == "int4" ) { material.add(name, load<Vec4i>(entry)); } |
| 881 | else if (type == "float" ) { material.add(name, load<float>(entry)); } |
| 882 | else if (type == "float2" ) { material.add(name, load<Vec2f>(entry)); } |
| 883 | else if (type == "float3" ) { material.add(name, load<Vec3f>(entry)); } |
| 884 | else if (type == "float4" ) { material.add(name, load<Vec4f>(entry)); } |
| 885 | else THROW_RUNTIME_ERROR(entry->loc.str()+": invalid param type: "+type); |
| 886 | } |
| 887 | } |
| 888 | return material; |
| 889 | } |
| 890 | |
| 891 | Ref<SceneGraph::MaterialNode> XMLLoader::loadMaterial(const Ref<XML>& xml) |
| 892 | { |