فهرست منبع

[lua] Fix track enumeration. Closes #1635.

badlogic 5 سال پیش
والد
کامیت
b44154e2b7
2فایلهای تغییر یافته به همراه20 افزوده شده و 8 حذف شده
  1. 1 1
      spine-love/main.lua
  2. 19 7
      spine-lua/AnimationState.lua

+ 1 - 1
spine-love/main.lua

@@ -53,7 +53,7 @@ function loadSkeleton (jsonFile, atlasFile, animation, skin, scale, x, y)
 	local stateData = spine.AnimationStateData.new(skeletonData)
 	local stateData = spine.AnimationStateData.new(skeletonData)
 	local state = spine.AnimationState.new(stateData)
 	local state = spine.AnimationState.new(stateData)
 	state:setAnimationByName(0, animation, true)
 	state:setAnimationByName(0, animation, true)
-	if (jsonFile == "spineboy-ess") then
+	if (jsonFile == "spineboy-pro") then
 		stateData:setMix("walk", "jump", 0.5)
 		stateData:setMix("walk", "jump", 0.5)
 		stateData:setMix("jump", "run", 0.5)
 		stateData:setMix("jump", "run", 0.5)
 		state:addAnimationByName(0, "jump", false, 3)
 		state:addAnimationByName(0, "jump", false, 3)

+ 19 - 7
spine-lua/AnimationState.lua

@@ -227,7 +227,7 @@ function AnimationState:update (delta)
 	delta = delta * self.timeScale
 	delta = delta * self.timeScale
 	local tracks = self.tracks
 	local tracks = self.tracks
 	local queue = self.queue
 	local queue = self.queue
-	local numTracks = #tracks
+	local numTracks = getNumTracks(tracks)
 	local i = 0
 	local i = 0
 	while i <= numTracks do
 	while i <= numTracks do
 		current = tracks[i]
 		current = tracks[i]
@@ -333,7 +333,7 @@ function AnimationState:apply (skeleton)
 	local queue = self.queue
 	local queue = self.queue
 	local applied = false
 	local applied = false
 
 
-	local numTracks = #tracks
+	local numTracks = getNumTracks(tracks)
 	local i = 0
 	local i = 0
 	while i <= numTracks do
 	while i <= numTracks do
 		current = tracks[i]
 		current = tracks[i]
@@ -612,7 +612,7 @@ function AnimationState:clearTracks ()
 	local tracks = self.tracks
 	local tracks = self.tracks
 	local oldDrainDisabled = queue.drainDisabled
 	local oldDrainDisabled = queue.drainDisabled
 	queue.drainDisabled = true;
 	queue.drainDisabled = true;
-	local numTracks = #tracks
+	local numTracks = getNumTracks(tracks)
 	local i = 0
 	local i = 0
 	while i <= numTracks do
 	while i <= numTracks do
 		self:clearTrack(i)
 		self:clearTrack(i)
@@ -764,7 +764,7 @@ function AnimationState:setEmptyAnimations (mixDuration)
 	local oldDrainDisabled = queue.drainDisabled
 	local oldDrainDisabled = queue.drainDisabled
 	queue.drainDisabled = true
 	queue.drainDisabled = true
 	local tracks = self.tracks
 	local tracks = self.tracks
-	local numTracks = #tracks
+	local numTracks = getNumTracks(tracks)
 	local i = 0
 	local i = 0
 	while i <= numTracks do
 	while i <= numTracks do
 		current = tracks[i]
 		current = tracks[i]
@@ -825,6 +825,18 @@ function AnimationState:disposeNext (entry)
 	entry.next = nil
 	entry.next = nil
 end
 end
 
 
+function getNumTracks(tracks)
+	local numTracks = 0
+	if tracks then
+		for i, track in pairs(tracks) do
+			if i > numTracks then
+				numTracks = i
+			end
+		end
+	end
+	return numTracks
+end
+
 function AnimationState:_animationsChanged ()
 function AnimationState:_animationsChanged ()
 	self.animationsChanged = false
 	self.animationsChanged = false
 
 
@@ -832,11 +844,11 @@ function AnimationState:_animationsChanged ()
 
 
 	local highestIndex = -1
 	local highestIndex = -1
 	local tracks = self.tracks
 	local tracks = self.tracks
-	local numTracks = #tracks
+	local numTracks = getNumTracks(tracks)
 	local i = 0
 	local i = 0
 	while i <= numTracks do
 	while i <= numTracks do
-		current = tracks[i]
-		if current then
+		entry = tracks[i]
+		if entry then
 			if i > highestIndex then highestIndex = i end
 			if i > highestIndex then highestIndex = i end
 
 
 			if entry then
 			if entry then