Clients/Client2020/ExtraContent/LuaPackages/UGCValidationImpl/init.lua

97 lines
2.7 KiB
Lua

game:DefineFastFlag("UGCValidateMeshBounds", false)
game:DefineFastFlag("UGCValidateHandleSize", false)
game:DefineFastFlag("UGCExtraBannedNames", false)
local root = script
local validateInstanceTree = require(root.validation.validateInstanceTree)
local validateMeshTriangles = require(root.validation.validateMeshTriangles)
local validateModeration = require(root.validation.validateModeration)
local validateMaterials = require(root.validation.validateMaterials)
local validateTags = require(root.validation.validateTags)
local validateMeshBounds = require(root.validation.validateMeshBounds)
local validateTextureSize = require(root.validation.validateTextureSize)
local validateHandleSize = require(root.validation.validateHandleSize)
local validateProperties = require(root.validation.validateProperties)
local function validateInternal(isAsync, instances, assetTypeEnum, noModeration)
-- validate that only one instance was selected
if #instances == 0 then
return false, { "No instances selected" }
elseif #instances > 1 then
return false, { "More than one instance selected" }
end
local instance = instances[1]
local success, reasons
success, reasons = validateInstanceTree(instance, assetTypeEnum)
if not success then
return false, reasons
end
success, reasons = validateMaterials(instance)
if not success then
return false, reasons
end
success, reasons = validateProperties(instance)
if not success then
return false, reasons
end
success, reasons = validateTags(instance)
if not success then
return false, reasons
end
if game:GetFastFlag("UGCValidateMeshBounds") then
success, reasons = validateMeshBounds(isAsync, instance, assetTypeEnum)
if not success then
return false, reasons
end
end
success, reasons = validateTextureSize(isAsync, instance)
if not success then
return false, reasons
end
if game:GetFastFlag("UGCValidateHandleSize") then
success, reasons = validateHandleSize(isAsync, instance)
if not success then
return false, reasons
end
end
success, reasons = validateMeshTriangles(isAsync, instance)
if not success then
return false, reasons
end
if not noModeration then
success, reasons = validateModeration(isAsync, instance)
if not success then
return false, reasons
end
end
return true
end
local UGCValidation = {}
function UGCValidation.validate(instances, assetTypeEnum, noModeration)
local success, reasons = validateInternal(--[[ isAsync = ]] false, instances, assetTypeEnum, noModeration)
return success, reasons
end
function UGCValidation.validateAsync(instances, assetTypeEnum, callback, noModeration)
coroutine.wrap(function()
callback(validateInternal(--[[ isAsync = ]] true, instances, assetTypeEnum, noModeration))
end)()
end
return UGCValidation