JD2022-TU1/data/EngineData/Helpers/spriteMetaData_helpers.ilu

55 lines
1.5 KiB
Text

function interpolate( _a, _b, _t )
return _a + (_b - _a) * _t
end
function inverseInterpolate( _a, _b, _value )
return (_value - _a) / (_b - _a)
end
function convertBones( _iluPath, _uvRatio )
includeReference(_iluPath)
local bounds = ITF_GFX_UV_ATLAS[1]
local xMin = bounds.uv0.x
local xMax = bounds.uv1.x
local yMin = bounds.uv0.y
local yMax = bounds.uv1.y
local bones = {}
for i=2, #ITF_GFX_UV_ATLAS do
local uvData = ITF_GFX_UV_ATLAS[i]
local bone =
{
SpriteBone =
{
name = uvData.flag,
-- normalize X on [0, 1] and Y [-1, 1]
p0 = vector2dNew(inverseInterpolate(xMin, xMax, uvData.uv0.x), 1 - 2 * inverseInterpolate(yMin, yMax, uvData.uv0.y)),
p1 = vector2dNew(inverseInterpolate(xMin, xMax, uvData.uv1.x), 1 - 2 * inverseInterpolate(yMin, yMax, uvData.uv1.y)),
uv0 = vector2dNew(uvData.uv0.x, 1 - uvData.uv0.y / _uvRatio),
uv1 = vector2dNew(uvData.uv1.x, 1 - uvData.uv1.y / _uvRatio),
},
}
bone.TestSpriteBone = bone.SpriteBone
appendTable(bones, {bone})
end
return bones
end
function convertMetaData( _iluPath, _uvRatio )
local meta =
{
SpriteMetaData =
{
sprite = ITF_GFX_UV_ATLAS[1],
bones = convertBones(_iluPath, _uvRatio),
},
}
meta.TestSpriteMetaData = SpriteMetaData
return meta
end