55 lines
1.5 KiB
Text
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
|