[cpp] 4.3 porting WIP

This commit is contained in:
Mario Zechner 2025-06-11 23:17:31 +02:00
parent f71fd28ac9
commit a497bb39c5
2 changed files with 21 additions and 19 deletions

View File

@ -164,6 +164,8 @@ namespace spine {
/// ///
/// See https://esotericsoftware.com/spine-transform-constraints Transform constraints in the Spine User Guide. /// See https://esotericsoftware.com/spine-transform-constraints Transform constraints in the Spine User Guide.
class SP_API TransformConstraintData : public ConstraintData<TransformConstraint, TransformConstraintPose> { class SP_API TransformConstraintData : public ConstraintData<TransformConstraint, TransformConstraintPose> {
public:
static const int ROTATION = 0, X = 1, Y = 2, SCALEX = 3, SCALEY = 4, SHEARY = 5;
friend class SkeletonBinary; friend class SkeletonBinary;
friend class SkeletonJson; friend class SkeletonJson;
friend class TransformConstraint; friend class TransformConstraint;

View File

@ -62,51 +62,51 @@ void TransformConstraintData::setSource(BoneData* source) {
} }
float TransformConstraintData::getOffsetRotation() { float TransformConstraintData::getOffsetRotation() {
return _offsets[0]; return _offsets[ROTATION];
} }
void TransformConstraintData::setOffsetRotation(float offsetRotation) { void TransformConstraintData::setOffsetRotation(float offsetRotation) {
_offsets[0] = offsetRotation; _offsets[ROTATION] = offsetRotation;
} }
float TransformConstraintData::getOffsetX() { float TransformConstraintData::getOffsetX() {
return _offsets[1]; return _offsets[X];
} }
void TransformConstraintData::setOffsetX(float offsetX) { void TransformConstraintData::setOffsetX(float offsetX) {
_offsets[1] = offsetX; _offsets[X] = offsetX;
} }
float TransformConstraintData::getOffsetY() { float TransformConstraintData::getOffsetY() {
return _offsets[2]; return _offsets[Y];
} }
void TransformConstraintData::setOffsetY(float offsetY) { void TransformConstraintData::setOffsetY(float offsetY) {
_offsets[2] = offsetY; _offsets[Y] = offsetY;
} }
float TransformConstraintData::getOffsetScaleX() { float TransformConstraintData::getOffsetScaleX() {
return _offsets[3]; return _offsets[SCALEX];
} }
void TransformConstraintData::setOffsetScaleX(float offsetScaleX) { void TransformConstraintData::setOffsetScaleX(float offsetScaleX) {
_offsets[3] = offsetScaleX; _offsets[SCALEX] = offsetScaleX;
} }
float TransformConstraintData::getOffsetScaleY() { float TransformConstraintData::getOffsetScaleY() {
return _offsets[4]; return _offsets[SCALEY];
} }
void TransformConstraintData::setOffsetScaleY(float offsetScaleY) { void TransformConstraintData::setOffsetScaleY(float offsetScaleY) {
_offsets[4] = offsetScaleY; _offsets[SCALEY] = offsetScaleY;
} }
float TransformConstraintData::getOffsetShearY() { float TransformConstraintData::getOffsetShearY() {
return _offsets[5]; return _offsets[SHEARY];
} }
void TransformConstraintData::setOffsetShearY(float offsetShearY) { void TransformConstraintData::setOffsetShearY(float offsetShearY) {
_offsets[5] = offsetShearY; _offsets[SHEARY] = offsetShearY;
} }
bool TransformConstraintData::getLocalSource() { bool TransformConstraintData::getLocalSource() {
@ -168,9 +168,9 @@ ToProperty::~ToProperty() {
RTTI_IMPL(FromRotate, FromProperty) RTTI_IMPL(FromRotate, FromProperty)
float FromRotate::value(BonePose& source, bool local, float* offsets) { float FromRotate::value(BonePose& source, bool local, float* offsets) {
if (local) return source.getRotation() + offsets[0]; if (local) return source.getRotation() + offsets[ROTATION];
float value = MathUtil::atan2(source._c, source._a) * MathUtil::Rad_Deg float value = MathUtil::atan2(source._c, source._a) * MathUtil::Rad_Deg
+ (source._a * source._d - source._b * source._c > 0 ? offsets[0] : -offsets[0]); + (source._a * source._d - source._b * source._c > 0 ? offsets[ROTATION] : -offsets[ROTATION]);
if (value < 0) value += 360; if (value < 0) value += 360;
return value; return value;
} }
@ -205,7 +205,7 @@ void ToRotate::apply(TransformConstraintPose& pose, BonePose& bone, float value,
RTTI_IMPL(FromX, FromProperty) RTTI_IMPL(FromX, FromProperty)
float FromX::value(BonePose& source, bool local, float* offsets) { float FromX::value(BonePose& source, bool local, float* offsets) {
return local ? source.getX() + offsets[1] : offsets[1] * source._a + offsets[2] * source._b + source.getWorldX(); return local ? source.getX() + offsets[X] : offsets[X] * source._a + offsets[Y] * source._b + source.getWorldX();
} }
RTTI_IMPL(ToX, ToProperty) RTTI_IMPL(ToX, ToProperty)
@ -227,7 +227,7 @@ void ToX::apply(TransformConstraintPose& pose, BonePose& bone, float value, bool
RTTI_IMPL(FromY, FromProperty) RTTI_IMPL(FromY, FromProperty)
float FromY::value(BonePose& source, bool local, float* offsets) { float FromY::value(BonePose& source, bool local, float* offsets) {
return local ? source.getY() + offsets[2] : offsets[1] * source._c + offsets[2] * source._d + source.getWorldY(); return local ? source.getY() + offsets[Y] : offsets[X] * source._c + offsets[Y] * source._d + source.getWorldY();
} }
RTTI_IMPL(ToY, ToProperty) RTTI_IMPL(ToY, ToProperty)
@ -249,7 +249,7 @@ void ToY::apply(TransformConstraintPose& pose, BonePose& bone, float value, bool
RTTI_IMPL(FromScaleX, FromProperty) RTTI_IMPL(FromScaleX, FromProperty)
float FromScaleX::value(BonePose& source, bool local, float* offsets) { float FromScaleX::value(BonePose& source, bool local, float* offsets) {
return (local ? source.getScaleX() : MathUtil::sqrt(source._a * source._a + source._c * source._c)) + offsets[3]; return (local ? source.getScaleX() : MathUtil::sqrt(source._a * source._a + source._c * source._c)) + offsets[SCALEX];
} }
RTTI_IMPL(ToScaleX, ToProperty) RTTI_IMPL(ToScaleX, ToProperty)
@ -280,7 +280,7 @@ void ToScaleX::apply(TransformConstraintPose& pose, BonePose& bone, float value,
RTTI_IMPL(FromScaleY, FromProperty) RTTI_IMPL(FromScaleY, FromProperty)
float FromScaleY::value(BonePose& source, bool local, float* offsets) { float FromScaleY::value(BonePose& source, bool local, float* offsets) {
return (local ? source.getScaleY() : MathUtil::sqrt(source._b * source._b + source._d * source._d)) + offsets[4]; return (local ? source.getScaleY() : MathUtil::sqrt(source._b * source._b + source._d * source._d)) + offsets[SCALEY];
} }
RTTI_IMPL(ToScaleY, ToProperty) RTTI_IMPL(ToScaleY, ToProperty)
@ -311,7 +311,7 @@ void ToScaleY::apply(TransformConstraintPose& pose, BonePose& bone, float value,
RTTI_IMPL(FromShearY, FromProperty) RTTI_IMPL(FromShearY, FromProperty)
float FromShearY::value(BonePose& source, bool local, float* offsets) { float FromShearY::value(BonePose& source, bool local, float* offsets) {
return (local ? source.getShearY() : (MathUtil::atan2(source._d, source._b) - MathUtil::atan2(source._c, source._a)) * MathUtil::Rad_Deg - 90) + offsets[5]; return (local ? source.getShearY() : (MathUtil::atan2(source._d, source._b) - MathUtil::atan2(source._c, source._a)) * MathUtil::Rad_Deg - 90) + offsets[SHEARY];
} }
RTTI_IMPL(ToShearY, ToProperty) RTTI_IMPL(ToShearY, ToProperty)