Merge pull request #52 from pharan/master

Inherit rotation and scale in C#
This commit is contained in:
Nathan Sweet 2013-05-28 08:42:14 -07:00
commit 5ba06b952b
3 changed files with 22 additions and 3 deletions

View File

@ -61,10 +61,19 @@ namespace Spine {
if (parent != null) {
WorldX = X * parent.M00 + Y * parent.M01 + parent.WorldX;
WorldY = X * parent.M10 + Y * parent.M11 + parent.WorldY;
WorldScaleX = parent.WorldScaleX * ScaleX;
WorldScaleY = parent.WorldScaleY * ScaleY;
WorldRotation = parent.WorldRotation + Rotation;
if(Data.inheritScale) {
WorldScaleX = parent.WorldScaleX * ScaleX;
WorldScaleY = parent.WorldScaleY * ScaleY;
} else {
WorldScaleX = ScaleX;
WorldScaleY = ScaleY;
}
WorldRotation = Data.inheritRotation ? parent.WorldRotation + Rotation : Rotation;
} else {
WorldX = X;
WorldY = Y;
WorldScaleX = ScaleX;

View File

@ -36,6 +36,8 @@ namespace Spine {
public float Rotation { get; set; }
public float ScaleX { get; set; }
public float ScaleY { get; set; }
public bool inheritScale { get; set; }
public bool inheritRotation { get; set; }
/** @param parent May be null. */
public BoneData (String name, BoneData parent) {

View File

@ -83,6 +83,8 @@ namespace Spine {
boneData.Rotation = GetFloat(boneMap, "rotation", 0);
boneData.ScaleX = GetFloat(boneMap, "scaleX", 1);
boneData.ScaleY = GetFloat(boneMap, "scaleY", 1);
boneData.inheritScale = GetBoolean (boneMap, "inheritScale", true);
boneData.inheritRotation = GetBoolean (boneMap, "inheritRotation", true);
skeletonData.AddBone(boneData);
}
@ -174,6 +176,12 @@ namespace Spine {
return (float)defaultValue;
return (float)map[name];
}
private bool GetBoolean (Dictionary<String, Object> map, String name, bool defaultValue) {
if (!map.ContainsKey(name))
return (bool)defaultValue;
return (bool)map[name];
}
public static float ToColor (String hexString, int colorIndex) {
if (hexString.Length != 8)