40 lines
1.1 KiB
Lua
40 lines
1.1 KiB
Lua
local UGCValidationService = game:GetService("UGCValidationService")
|
|
|
|
local root = script.Parent.Parent
|
|
|
|
local Constants = require(root.Constants)
|
|
|
|
-- ensures accessory mesh does not have more triangles than Constants.MAX_HAT_TRIANGLES
|
|
local function validateMeshTriangles(isAsync, instance)
|
|
-- check mesh triangles
|
|
-- this is guaranteed to exist thanks to validateInstanceTree being called beforehand
|
|
local mesh = instance.Handle:FindFirstChildOfClass("SpecialMesh")
|
|
|
|
if mesh.MeshId == "" then
|
|
return false, { "Mesh must contain valid MeshId" }
|
|
end
|
|
|
|
local success, triangles = pcall(function()
|
|
if isAsync then
|
|
return UGCValidationService:GetMeshTriCount(mesh.MeshId)
|
|
else
|
|
return UGCValidationService:GetMeshTriCountSync(mesh.MeshId)
|
|
end
|
|
end)
|
|
|
|
if not success then
|
|
return false, { "Failed to load mesh data" }
|
|
elseif triangles > Constants.MAX_HAT_TRIANGLES then
|
|
return false, {
|
|
string.format(
|
|
"Mesh has %d triangles, but the limit is %d",
|
|
triangles,
|
|
Constants.MAX_HAT_TRIANGLES
|
|
)
|
|
}
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
return validateMeshTriangles |