diff --git a/spine-ts/spine-core/src/SkeletonBinary.ts b/spine-ts/spine-core/src/SkeletonBinary.ts index 587875c7c..634d8780d 100644 --- a/spine-ts/spine-core/src/SkeletonBinary.ts +++ b/spine-ts/spine-core/src/SkeletonBinary.ts @@ -320,15 +320,16 @@ export class SkeletonBinary { data.local = (flags & 128) != 0; data.bone = bones[input.readInt(true)]; let offset = input.readFloat(); + let propertyScale = 1; switch (input.readByte()) { case 0: data.property = new FromRotate(); break; case 1: { - offset *= scale; + propertyScale = scale; data.property = new FromX(); break; } case 2: { - offset *= scale; + propertyScale = scale; data.property = new FromY(); break; } @@ -337,9 +338,9 @@ export class SkeletonBinary { case 5: data.property = new FromShearY(); break; default: continue; }; - data.property.offset = offset; + data.property.offset = offset * propertyScale; data.offset = input.readFloat(); - data.scale = input.readFloat(); + data.scale = input.readFloat() / propertyScale; } constraints.push(data); break; diff --git a/spine-ts/spine-core/src/SkeletonJson.ts b/spine-ts/spine-core/src/SkeletonJson.ts index fac0117e8..ee72f7a97 100644 --- a/spine-ts/spine-core/src/SkeletonJson.ts +++ b/spine-ts/spine-core/src/SkeletonJson.ts @@ -346,7 +346,7 @@ export class SkeletonJson { const propertyScale = this.propertyScale(property, scale); data.property.offset = getValue(constraintMap, "from", 0) * propertyScale; data.offset = getValue(constraintMap, "to", 0); - data.scale = getValue(constraintMap, "scale", 1); + data.scale = getValue(constraintMap, "scale", 1) / propertyScale; data.local = getValue(constraintMap, "local", false); }