Clients/Client2020/ExtraContent/LuaPackages/UGCValidationImpl/validation/validateMaterials.lua

30 lines
1008 B
Lua

local root = script.Parent.Parent
local Constants = require(root.Constants)
-- ensures no descendant of instance has a material that does not exist in Constants.MATERIAL_WHITELIST
local function validateMaterials(instance)
local materialFailures = {}
for _, descendant in pairs(instance:GetDescendants()) do
if descendant:IsA("BasePart") and not Constants.MATERIAL_WHITELIST[descendant.Material] then
materialFailures[#materialFailures + 1] = descendant:GetFullName()
end
end
if #materialFailures > 0 then
local reasons = {}
local acceptedMaterialNames = {}
for material in pairs(Constants.MATERIAL_WHITELIST) do
acceptedMaterialNames[#acceptedMaterialNames + 1] = material.Name
end
reasons[#reasons + 1] = "Invalid materials for"
for _, name in pairs(materialFailures) do
reasons[#reasons + 1] = name
end
reasons[#reasons + 1] = "Accepted materials are " .. table.concat(acceptedMaterialNames, ", ")
return false, reasons
end
return true
end
return validateMaterials