Animate tail
This commit is contained in:
parent
6056cc7a02
commit
4445c2e370
63
script.lua
63
script.lua
@ -207,6 +207,8 @@ end
|
|||||||
--- @param period number Period of sine wave
|
--- @param period number Period of sine wave
|
||||||
--- @param amp number Peak amplitude of sine wave
|
--- @param amp number Peak amplitude of sine wave
|
||||||
function wave(x, period, amp) return math.sin((2/period)*math.pi*(x%period))*amp end
|
function wave(x, period, amp) return math.sin((2/period)*math.pi*(x%period))*amp end
|
||||||
|
function lerp(a, b, t) return a + ((b - a) * t) end
|
||||||
|
function rad(x) return x*math.pi/180 end
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- master state variables and configuration (do not access within pings) -- {{{
|
-- master state variables and configuration (do not access within pings) -- {{{
|
||||||
@ -262,6 +264,7 @@ function getLocalState()
|
|||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
local_state={}
|
local_state={}
|
||||||
|
old_state={}
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- PartsManager -- {{{
|
-- PartsManager -- {{{
|
||||||
@ -413,16 +416,16 @@ MAIN_GROUPS={model.Head, model.RightArm, model.LeftArm, model.RightLeg, model.Le
|
|||||||
|
|
||||||
TAIL_LEGGINGS={
|
TAIL_LEGGINGS={
|
||||||
model.Body.LeggingsTop,
|
model.Body.LeggingsTop,
|
||||||
|
model.Body.LeggingsTopTrimF,
|
||||||
|
model.Body.LeggingsTopTrimB,
|
||||||
model.Body.MTail1.Leggings,
|
model.Body.MTail1.Leggings,
|
||||||
model.Body.MTail1.LeggingsTopTrimF,
|
|
||||||
model.Body.MTail1.LeggingsTopTrimB,
|
|
||||||
model.Body.MTail1.LeggingsTrim,
|
model.Body.MTail1.LeggingsTrim,
|
||||||
model.Body.MTail1.MTail2.LeggingsBottom
|
model.Body.MTail1.MTail2.LeggingsBottom
|
||||||
}
|
}
|
||||||
TAIL_LEGGINGS_COLOR={
|
TAIL_LEGGINGS_COLOR={
|
||||||
|
model.Body.LeggingsTopTrimF,
|
||||||
|
model.Body.LeggingsTopTrimB,
|
||||||
model.Body.MTail1.Leggings,
|
model.Body.MTail1.Leggings,
|
||||||
model.Body.MTail1.LeggingsTopTrimF,
|
|
||||||
model.Body.MTail1.LeggingsTopTrimB,
|
|
||||||
model.Body.MTail1.LeggingsTrim,
|
model.Body.MTail1.LeggingsTrim,
|
||||||
model.Body.MTail1.MTail2.LeggingsBottom
|
model.Body.MTail1.MTail2.LeggingsBottom
|
||||||
}
|
}
|
||||||
@ -708,6 +711,7 @@ function updateTailVisibility()
|
|||||||
old_state.aquaticTailVisible=aquaticTailVisible()
|
old_state.aquaticTailVisible=aquaticTailVisible()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- armor {{{
|
||||||
armor_color={}
|
armor_color={}
|
||||||
armor_color['leather'] = {131 /255 , 84 /255 , 50 /255}
|
armor_color['leather'] = {131 /255 , 84 /255 , 50 /255}
|
||||||
armor_glint={}
|
armor_glint={}
|
||||||
@ -811,6 +815,46 @@ function colorArmor(item)
|
|||||||
return vectors.intToRGB(tag.display.color)
|
return vectors.intToRGB(tag.display.color)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
function animateTail(val)
|
||||||
|
local chest_rot = 3
|
||||||
|
local per=2*math.pi
|
||||||
|
model.Body.setRot(vectors.of{wave(val, per, 3), 0, 0})
|
||||||
|
armor_model.CHESTPLATE.setRot(vectors.of{-wave(val, per, rad(3)), 0, 0})
|
||||||
|
|
||||||
|
model.Body.LeggingsTopTrimF.setRot(vectors.of{wave(val-1, per, 4), 0, 0})
|
||||||
|
model.Body.LeggingsTopTrimB.setRot(vectors.of{wave(val-1, per, 4), 0, 0})
|
||||||
|
TAIL_BONES[1].setRot(vectors.of{wave(val-1, per, 7), 0, 0})
|
||||||
|
TAIL_BONES[2].setRot(vectors.of{wave(val-2, per, 8), 0, 0})
|
||||||
|
TAIL_BONES[3].setRot(vectors.of{wave(val-3, per, 12), 0, 0})
|
||||||
|
TAIL_BONES[4].setRot(vectors.of{wave(val-4, per, 15), 0, 0})
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
anim_tick=0
|
||||||
|
anim_velocity=0
|
||||||
|
anim_cycle=0
|
||||||
|
old_state.anim_cycle=0
|
||||||
|
|
||||||
|
function animateTick()
|
||||||
|
if aquaticTailVisible() then
|
||||||
|
anim_tick = anim_tick + 1
|
||||||
|
local velocity = player.getVelocity()
|
||||||
|
|
||||||
|
if aquaticTailVisible() then
|
||||||
|
old_state.anim_cycle=anim_cycle
|
||||||
|
local player_speed = math.sqrt(velocity.x^2 + velocity.y^2 + velocity.z^2)
|
||||||
|
anim_cycle=anim_cycle + (player_speed*5+0.75)
|
||||||
|
-- bubble animation would go here but i don't have that (yet)
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
anim_tick=0
|
||||||
|
anim_velocity=0
|
||||||
|
anim_cycle=0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -818,7 +862,6 @@ end
|
|||||||
|
|
||||||
-- initialize values -- {{{
|
-- initialize values -- {{{
|
||||||
function player_init()
|
function player_init()
|
||||||
old_state={}
|
|
||||||
old_state.health=player.getHealth()
|
old_state.health=player.getHealth()
|
||||||
for k, v in pairs(reduce(mergeTable, map(recurseModelGroup, model))) do
|
for k, v in pairs(reduce(mergeTable, map(recurseModelGroup, model))) do
|
||||||
v.setEnabled(true)
|
v.setEnabled(true)
|
||||||
@ -839,7 +882,7 @@ else
|
|||||||
v.setEnabled(false)
|
v.setEnabled(false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
anim_tick=0
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- Tick function -- {{{
|
-- Tick function -- {{{
|
||||||
@ -885,6 +928,9 @@ function tick()
|
|||||||
pmRefresh()
|
pmRefresh()
|
||||||
end
|
end
|
||||||
updateTailVisibility()
|
updateTailVisibility()
|
||||||
|
|
||||||
|
animateTick()
|
||||||
|
|
||||||
-- End of tick --
|
-- End of tick --
|
||||||
old_state.health=player.getHealth()
|
old_state.health=player.getHealth()
|
||||||
local_state.anim=player.getAnimation()
|
local_state.anim=player.getAnimation()
|
||||||
@ -892,6 +938,11 @@ end
|
|||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- Render function {{{
|
-- Render function {{{
|
||||||
|
function render(delta)
|
||||||
|
if aquaticTailVisible() then
|
||||||
|
animateTail((lerp(old_state.anim_cycle, anim_cycle, delta) * 0.2))
|
||||||
|
end
|
||||||
|
end
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- Enable commands -- {{{
|
-- Enable commands -- {{{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user