63 lines
1.7 KiB
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 |