bool Model::SetMaterial(unsigned int skinIndex, const String& subMeshName, Material* material) { #if NAZARA_GRAPHICS_SAFE if (skinIndex >= m_skinCount) { NazaraError("Skin index out of range (" + String::Number(skinIndex) + " >= " + String::Number(m_skinCount)); return false; } #endif SubMesh* subMesh = m_mesh->GetSubMesh(subMeshName); if (!subMesh) { NazaraError("Mesh has no submesh \"" + subMeshName + '"'); return false; } unsigned int matIndex = subMesh->GetMaterialIndex(); if (matIndex >= m_matCount) { NazaraError("Material index out of range (" + String::Number(matIndex) + " >= " + String::Number(m_matCount)); return false; } unsigned int index = skinIndex * m_matCount + matIndex; if (material) m_materials[index] = material; else m_materials[index] = Material::GetDefault(); return true; }
Material* Model::GetMaterial(const String& subMeshName) const { #if NAZARA_GRAPHICS_SAFE if (!m_mesh) { NazaraError("Model has no mesh"); return nullptr; } #endif SubMesh* subMesh = m_mesh->GetSubMesh(subMeshName); if (!subMesh) { NazaraError("Mesh has no submesh \"" + subMeshName + '"'); return nullptr; } unsigned int matIndex = subMesh->GetMaterialIndex(); if (matIndex >= m_matCount) { NazaraError("Material index out of range (" + String::Number(matIndex) + " >= " + String::Number(m_matCount) + ')'); return nullptr; } return m_materials[m_skin * m_matCount + matIndex]; }
bool Model::SetMaterial(const String& subMeshName, Material* material) { SubMesh* subMesh = m_mesh->GetSubMesh(subMeshName); if (!subMesh) { NazaraError("Mesh has no submesh \"" + subMeshName + '"'); return false; } unsigned int matIndex = subMesh->GetMaterialIndex(); if (matIndex >= m_matCount) { NazaraError("Material index out of range (" + String::Number(matIndex) + " >= " + String::Number(m_matCount) + ')'); return false; } unsigned int index = m_skin * m_matCount + matIndex; if (material) m_materials[index] = material; else m_materials[index] = Material::GetDefault(); return true; }