mirror of
https://github.com/Insality/druid
synced 2025-11-27 19:30:53 +01:00
First dirty commit of old code
This commit is contained in:
62
druid/components/spine_anim.lua
Normal file
62
druid/components/spine_anim.lua
Normal file
@@ -0,0 +1,62 @@
|
||||
local M = {}
|
||||
|
||||
--- Set animation scene
|
||||
-- @param scene - animations scene
|
||||
function M.set_scene(instance, scene)
|
||||
instance.last_scene = scene
|
||||
gui.set_spine_scene(instance.node, scene)
|
||||
end
|
||||
|
||||
|
||||
--- Set idle animation
|
||||
-- @param anim - idle animation name or index in idle table
|
||||
-- @param properties - properties of the animation
|
||||
function M.play_idle(instance, anim, properties)
|
||||
if not anim then
|
||||
return
|
||||
end
|
||||
anim = (instance.idle_table and instance.idle_table[anim]) and instance.idle_table[anim] or anim
|
||||
instance.last_value = anim
|
||||
properties = properties or {}
|
||||
gui.play_spine_anim(instance.node, anim, gui.PLAYBACK_LOOP_FORWARD, properties)
|
||||
end
|
||||
|
||||
--- Set active animation
|
||||
-- @param anim - active animation name or index in active table
|
||||
-- @param callback - call when animation done
|
||||
-- @param idle_after - set idle after active anim
|
||||
function M.play_active(instance, anim, callback, idle_after)
|
||||
instance.is_play_now = true
|
||||
anim = instance.active_table and instance.active_table[anim] or anim
|
||||
instance.last_value = anim
|
||||
instance.callback = callback
|
||||
M.play_idle(instance, idle_after)
|
||||
gui.play_spine_anim(instance.node, anim, gui.PLAYBACK_ONCE_FORWARD, {},
|
||||
function()
|
||||
M.play_idle(instance, idle_after)
|
||||
instance.is_play_now = false
|
||||
if callback then
|
||||
callback(instance.parent.parent)
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
--- Called when layout updated (rotate for example)
|
||||
function M.on_layout_updated(instance)
|
||||
if instance.last_scene then
|
||||
M.set_scene(instance, instance.last_scene)
|
||||
end
|
||||
if instance.last_value then
|
||||
M.play_idle(instance, instance.last_value)
|
||||
end
|
||||
if instance.is_play_now then
|
||||
instance.is_play_now = false
|
||||
if instance.callback then
|
||||
instance.callback(instance.parent.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user