From db8cba6637f83703f1e5c0b3d262f5c2c04c06bd Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 20 Apr 2022 13:39:44 +0200 Subject: [PATCH] [godot] Clean-up SpineTransformConstraint. --- .../spine_godot/SpineTransformConstraint.cpp | 78 ++++++++++++------- .../spine_godot/SpineTransformConstraint.h | 21 +++-- 2 files changed, 61 insertions(+), 38 deletions(-) diff --git a/spine-godot/spine_godot/SpineTransformConstraint.cpp b/spine-godot/spine_godot/SpineTransformConstraint.cpp index 2166a5917..b7283911e 100644 --- a/spine-godot/spine_godot/SpineTransformConstraint.cpp +++ b/spine-godot/spine_godot/SpineTransformConstraint.cpp @@ -28,6 +28,7 @@ *****************************************************************************/ #include "SpineTransformConstraint.h" +#include "SpineCommon.h" void SpineTransformConstraint::_bind_methods() { ClassDB::bind_method(D_METHOD("update"), &SpineTransformConstraint::update); @@ -51,98 +52,121 @@ void SpineTransformConstraint::_bind_methods() { ClassDB::bind_method(D_METHOD("set_active", "v"), &SpineTransformConstraint::set_active); } -SpineTransformConstraint::SpineTransformConstraint() : transform_constraint(NULL) {} -SpineTransformConstraint::~SpineTransformConstraint() {} +SpineTransformConstraint::SpineTransformConstraint() : transform_constraint(nullptr) { +} void SpineTransformConstraint::update() { + SPINE_CHECK(transform_constraint,) transform_constraint->update(); } int SpineTransformConstraint::get_order() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getOrder(); } Ref SpineTransformConstraint::get_data() { - auto &d = transform_constraint->getData(); - Ref gd_d(memnew(SpineTransformConstraintData)); - gd_d->set_spine_object(&d); - return gd_d; + SPINE_CHECK(transform_constraint, nullptr) + auto &data = transform_constraint->getData(); + Ref data_ref(memnew(SpineTransformConstraintData)); + data_ref->set_spine_object(&data); + return data_ref; } Array SpineTransformConstraint::get_bones() { - auto &bs = transform_constraint->getBones(); - Array gd_bs; - gd_bs.resize(bs.size()); - for (size_t i = 0; i < bs.size(); ++i) { - auto b = bs[i]; - if (b == NULL) gd_bs[i] = Ref(NULL); - Ref gd_b(memnew(SpineBone)); - gd_b->set_spine_object(b); - gd_bs[i] = gd_b; + Array result; + SPINE_CHECK(transform_constraint, result) + auto &bones = transform_constraint->getBones(); + result.resize((int)bones.size()); + for (int i = 0; i < bones.size(); ++i) { + auto bone = bones[i]; + Ref bone_ref(memnew(SpineBone)); + bone_ref->set_spine_object(bone); + result[i] = bone_ref; } - return gd_bs; + return result; } Ref SpineTransformConstraint::get_target() { - auto b = transform_constraint->getTarget(); - if (b == NULL) return NULL; - Ref gd_b(memnew(SpineBone)); - gd_b->set_spine_object(b); - return gd_b; + SPINE_CHECK(transform_constraint, nullptr) + auto target = transform_constraint->getTarget(); + if (!target) return nullptr; + Ref target_ref(memnew(SpineBone)); + target_ref->set_spine_object(target); + return target_ref; } + void SpineTransformConstraint::set_target(Ref v) { - if (v.is_valid()) { - transform_constraint->setTarget(v->get_spine_object()); - } else { - transform_constraint->setTarget(NULL); - } + SPINE_CHECK(transform_constraint,) + transform_constraint->setTarget(v.is_valid() ? v->get_spine_object() : nullptr); } float SpineTransformConstraint::get_mix_rotate() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getMixRotate(); } + void SpineTransformConstraint::set_mix_rotate(float v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setMixRotate(v); } float SpineTransformConstraint::get_mix_x() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getMixX(); } + void SpineTransformConstraint::set_mix_x(float v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setMixX(v); } float SpineTransformConstraint::get_mix_y() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getMixY(); } + void SpineTransformConstraint::set_mix_y(float v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setMixY(v); } float SpineTransformConstraint::get_mix_scale_x() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getMixScaleX(); } + void SpineTransformConstraint::set_mix_scale_x(float v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setMixScaleX(v); } float SpineTransformConstraint::get_mix_scale_y() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getMixScaleY(); } + void SpineTransformConstraint::set_mix_scale_y(float v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setMixScaleY(v); } float SpineTransformConstraint::get_mix_shear_y() { + SPINE_CHECK(transform_constraint, 0) return transform_constraint->getMixShearY(); } + void SpineTransformConstraint::set_mix_shear_y(float v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setMixShearY(v); } bool SpineTransformConstraint::is_active() { + SPINE_CHECK(transform_constraint, false) return transform_constraint->isActive(); } + void SpineTransformConstraint::set_active(bool v) { + SPINE_CHECK(transform_constraint,) transform_constraint->setActive(v); -} \ No newline at end of file +} diff --git a/spine-godot/spine_godot/SpineTransformConstraint.h b/spine-godot/spine_godot/SpineTransformConstraint.h index 6430f05fb..76295e487 100644 --- a/spine-godot/spine_godot/SpineTransformConstraint.h +++ b/spine-godot/spine_godot/SpineTransformConstraint.h @@ -30,10 +30,6 @@ #ifndef GODOT_SPINETRANSFORMCONSTRAINT_H #define GODOT_SPINETRANSFORMCONSTRAINT_H -#include "core/variant_parser.h" - -#include - #include "SpineTransformConstraintData.h" #include "SpineBone.h" @@ -48,14 +44,9 @@ private: public: SpineTransformConstraint(); - ~SpineTransformConstraint(); - inline void set_spine_object(spine::TransformConstraint *tc) { - transform_constraint = tc; - } - inline spine::TransformConstraint *get_spine_object() { - return transform_constraint; - } + void set_spine_object(spine::TransformConstraint *tc) { transform_constraint = tc; } + spine::TransformConstraint *get_spine_object() { return transform_constraint; } void update(); @@ -66,27 +57,35 @@ public: Array get_bones(); Ref get_target(); + void set_target(Ref v); float get_mix_rotate(); + void set_mix_rotate(float v); float get_mix_x(); + void set_mix_x(float v); float get_mix_y(); + void set_mix_y(float v); float get_mix_scale_x(); + void set_mix_scale_x(float v); float get_mix_scale_y(); + void set_mix_scale_y(float v); float get_mix_shear_y(); + void set_mix_shear_y(float v); bool is_active(); + void set_active(bool v); };