add gs
This commit is contained in:
+59
@@ -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
|
||||
Reference in New Issue
Block a user