30 lines
1008 B
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 |