c1_lua/lua/app/bf/unity/mesh_spine_object.lua
2023-04-03 10:59:13 +08:00

77 lines
2.2 KiB
Lua

local BaseObject = require "app/bf/unity/base_object"
local MeshSpineObject = class("SpineObject", BaseObject)
function MeshSpineObject:ctor()
end
function MeshSpineObject:initSkeletonDataAsset(dataAsset)
local skeletonAnimation = self:getSkeletonAnimation()
skeletonAnimation.skeletonDataAsset = dataAsset
skeletonAnimation:Initialize(false)
end
function MeshSpineObject:getSkeletonAnimation()
if not self.skeletonAnimation then
self.skeletonAnimation = self:getComponent(GConst.TYPEOF_UNITY_CLASS.SKELETON_ANIMATION)
end
return self.skeletonAnimation
end
function MeshSpineObject:getAnimationState()
self:getSkeletonAnimation()
if not self.animationState then
self.animationState = self.skeletonAnimation.AnimationState
end
return self.animationState
end
function MeshSpineObject:playAnim(animName, loop, forceRefresh)
self:getAnimationState()
if self.animationState then
local trackEntry = self.animationState:SetAnimation(0, animName, loop)
if forceRefresh then
self.skeletonAnimation:Update(0)
end
return trackEntry
end
end
function MeshSpineObject:setTimeScale(timeScale)
if self.skeletonAnimation then
self.skeletonAnimation.timeScale = timeScale
end
end
function MeshSpineObject:setIsLoop(isLoop)
if self.skeletonAnimation then
self.skeletonAnimation.loop = isLoop
end
end
function MeshSpineObject:addAnimationCompleteCallback(callback)
if self._animationStateCompleteCallback then
return
end
self._animationStateCompleteCallback = function(entry)
callback(entry.Animation.Name)
end
local state = self:getAnimationState()
state:Complete("+", self._animationStateCompleteCallback)
end
function MeshSpineObject:removeAnimationCompleteCallback()
if self._animationStateCompleteCallback then
local state = self:getAnimationState()
state:Complete("-", self._animationStateCompleteCallback)
self._animationStateCompleteCallback = nil
end
end
function MeshSpineObject:onDestroy()
self:removeAnimationCompleteCallback()
BaseObject.onDestroy(self)
self.skeletonAnimation = nil
self.animationState = nil
end
return MeshSpineObject