SyntaxGameServer/RCCService2020/internalscripts/thumbnails/modules/ScaleUtility.lua

63 lines
1.7 KiB
Lua

-- Utility module for managing the scale of mannequins and items in thumbnails
local ScaleUtility = {}
local CLASSIC_SCALE = "Classic"
local RTHRO_NORMAL = "ProportionsNormal"
local RTHRO_SLENDER = "ProportionsSlender"
local function getPartScaleType(part)
local value = part:FindFirstChild("AvatarPartScaleType")
if value then
return value.Value
end
return CLASSIC_SCALE
end
function ScaleUtility.GetScaleTypeForAccessory(accessory)
local handle = accessory:FindFirstChild("Handle")
if not handle then
return CLASSIC_SCALE
end
return getPartScaleType(handle)
end
function ScaleUtility.GetObjectsScaleType(objects)
for _, object in pairs(objects) do
local partScaleType = object:FindFirstChild("AvatarPartScaleType", --[[ recursive = ]] true)
if partScaleType then
return partScaleType.Value
end
end
end
local function getOrCreateScaleValue(humanoid, name, default)
local scaleValue = humanoid:FindFirstChild(name)
if scaleValue then
return scaleValue
end
scaleValue = Instance.new("NumberValue")
scaleValue.Name = name
scaleValue.Value = default
scaleValue.Parent = humanoid
return scaleValue
end
function ScaleUtility.CreateProportionScaleValues(humanoid, scaleType)
local bodyTypeValue = getOrCreateScaleValue(humanoid, "BodyTypeScale", 0)
local bodyProportionValue = getOrCreateScaleValue(humanoid, "BodyProportionScale", 0)
if scaleType == RTHRO_NORMAL then
bodyTypeValue.Value = 1
bodyProportionValue.Value = 0
elseif scaleType == RTHRO_SLENDER then
bodyTypeValue.Value = 1
bodyProportionValue.Value = 1
end
end
return ScaleUtility