diff --git a/spine-lua/Bone.lua b/spine-lua/Bone.lua index cdf14aaa7..16e8f5f6d 100644 --- a/spine-lua/Bone.lua +++ b/spine-lua/Bone.lua @@ -38,9 +38,18 @@ function Bone.new (data, parent) if parent then self.worldX = self.x * parent.m00 + self.y * parent.m01 + parent.worldX self.worldY = self.x * parent.m10 + self.y * parent.m11 + parent.worldY - self.worldScaleX = parent.worldScaleX * self.scaleX - self.worldScaleY = parent.worldScaleY * self.scaleY - self.worldRotation = parent.worldRotation + self.rotation + if (self.data.inheritScale) then + self.worldScaleX = parent.worldScaleX * self.scaleX + self.worldScaleY = parent.worldScaleY * self.scaleY + else + self.worldScaleX = self.scaleX + self.worldScaleY = self.scaleY + end + if (self.data.inheritRotation) then + self.worldRotation = parent.worldRotation + self.rotation + else + self.worldRotation = self.rotation + end else if flipX then self.worldX = -self.x diff --git a/spine-lua/SkeletonJson.lua b/spine-lua/SkeletonJson.lua index f14f0500d..a837ceb13 100644 --- a/spine-lua/SkeletonJson.lua +++ b/spine-lua/SkeletonJson.lua @@ -75,6 +75,10 @@ function SkeletonJson.new (attachmentLoader) boneData.rotation = (boneMap["rotation"] or 0) boneData.scaleX = (boneMap["scaleX"] or 1) boneData.scaleY = (boneMap["scaleY"] or 1) + -- typical 'value or default' will not work here, as in practice the possible values are 'false' or nil, + -- both of which evaluate to false and the default value is true + if boneMap["inheritScale"] == false then boneData.inheritScale = false else boneData.inheritScale = true end + if boneMap["inheritRotation"] == false then boneData.inheritRotation = false else boneData.inheritRotation = true end table.insert(skeletonData.bones, boneData) end