This commit is contained in:
lx
2026-07-06 14:01:11 -04:00
commit c4f97d729d
16468 changed files with 935321 additions and 0 deletions
@@ -0,0 +1,59 @@
local UGCValidationService = game:GetService("UGCValidationService")
local root = script.Parent.Parent
local valueToString = require(root.util.valueToString)
local MARGIN_OF_ERROR = 0.1
local function validateHandleSize(isAsync, instance)
-- these are guaranteed to exist thanks to validateInstanceTree being called beforehand
local handle = instance.Handle
local mesh = handle:FindFirstChildOfClass("SpecialMesh")
local success, verts = pcall(function()
if isAsync then
return UGCValidationService:GetMeshVerts(mesh.MeshId)
else
return UGCValidationService:GetMeshVertsSync(mesh.MeshId)
end
end)
if not success then
return false, { "Failed to read mesh" }
end
local minX, maxX = math.huge, 0
local minY, maxY = math.huge, 0
local minZ, maxZ = math.huge, 0
for i = 1, #verts do
local vert = verts[i] * mesh.Scale
minX = math.min(minX, vert.X)
minY = math.min(minY, vert.Y)
minZ = math.min(minZ, vert.Z)
maxX = math.max(maxX, vert.X)
maxY = math.max(maxY, vert.Y)
maxZ = math.max(maxZ, vert.Z)
end
local meshSize = Vector3.new(
maxX - minX,
maxY - minY,
maxZ - minZ
)
-- allow handle.Size to be within MARGIN_OF_ERROR of meshSize or larger
-- this is necessary since we're comparing floats
-- the size only needs to be a rough equivalent for thumbnailing
if handle.Size.X + MARGIN_OF_ERROR < meshSize.X
or handle.Size.Y + MARGIN_OF_ERROR < meshSize.Y
or handle.Size.Z + MARGIN_OF_ERROR < meshSize.Z then
return false, {
string.format("Accessory Handle size should be at least the size of the mesh ( %s )", valueToString(meshSize))
}
end
return true
end
return validateHandleSize