diff --git a/spine-godot/spine_godot/SpineBoneData.cpp b/spine-godot/spine_godot/SpineBoneData.cpp index b870527dc..d9b0dfa72 100644 --- a/spine-godot/spine_godot/SpineBoneData.cpp +++ b/spine-godot/spine_godot/SpineBoneData.cpp @@ -28,136 +28,169 @@ *****************************************************************************/ #include "SpineBoneData.h" +#include +#include "common.h" void SpineBoneData::_bind_methods() { ClassDB::bind_method(D_METHOD("get_index"), &SpineBoneData::get_index); ClassDB::bind_method(D_METHOD("get_bone_name"), &SpineBoneData::get_bone_name); ClassDB::bind_method(D_METHOD("get_parent"), &SpineBoneData::get_parent); - ClassDB::bind_method(D_METHOD("get_length"), &SpineBoneData::get_length); ClassDB::bind_method(D_METHOD("set_length", "v"), &SpineBoneData::set_length); - ClassDB::bind_method(D_METHOD("get_x"), &SpineBoneData::get_x); ClassDB::bind_method(D_METHOD("set_x", "v"), &SpineBoneData::set_x); - ClassDB::bind_method(D_METHOD("get_y"), &SpineBoneData::get_y); ClassDB::bind_method(D_METHOD("set_y", "v"), &SpineBoneData::set_y); - ClassDB::bind_method(D_METHOD("get_rotation"), &SpineBoneData::get_rotation); ClassDB::bind_method(D_METHOD("set_rotation", "v"), &SpineBoneData::set_rotation); - ClassDB::bind_method(D_METHOD("get_scale_x"), &SpineBoneData::get_scale_x); ClassDB::bind_method(D_METHOD("set_scale_x", "v"), &SpineBoneData::set_scale_x); - ClassDB::bind_method(D_METHOD("get_scale_y"), &SpineBoneData::get_scale_y); ClassDB::bind_method(D_METHOD("set_scale_y", "v"), &SpineBoneData::set_scale_y); - ClassDB::bind_method(D_METHOD("get_shear_x"), &SpineBoneData::get_shear_x); ClassDB::bind_method(D_METHOD("set_shear_x", "v"), &SpineBoneData::set_shear_x); - ClassDB::bind_method(D_METHOD("get_shear_y"), &SpineBoneData::get_shear_y); ClassDB::bind_method(D_METHOD("set_shear_y", "v"), &SpineBoneData::set_shear_y); - ClassDB::bind_method(D_METHOD("get_transform_mode"), &SpineBoneData::get_transform_mode); ClassDB::bind_method(D_METHOD("set_transform_mode", "v"), &SpineBoneData::set_transform_mode); - ClassDB::bind_method(D_METHOD("is_skin_required"), &SpineBoneData::is_skin_required); ClassDB::bind_method(D_METHOD("set_skin_required", "v"), &SpineBoneData::set_skin_required); - - BIND_ENUM_CONSTANT(TRANSFORMMODE_NORMAL); - BIND_ENUM_CONSTANT(TRANSFORMMODE_ONLYTRANSLATION); - BIND_ENUM_CONSTANT(TRANSFORMMODE_NOROTATIONORREFLECTION); - BIND_ENUM_CONSTANT(TRANSFORMMODE_NOSCALE); - BIND_ENUM_CONSTANT(TRANSFORMMODE_NOSCALEORREFLECTION); + ClassDB::bind_method(D_METHOD("get_color"), &SpineBoneData::get_color); + ClassDB::bind_method(D_METHOD("set_color", "v"), &SpineBoneData::set_color); } -SpineBoneData::SpineBoneData() : bone_data(NULL) {} -SpineBoneData::~SpineBoneData() {} +SpineBoneData::SpineBoneData() : bone_data(nullptr) { +} + +SpineBoneData::~SpineBoneData() { +} int SpineBoneData::get_index() { + SPINE_CHECK(bone_data, 0) return bone_data->getIndex(); } String SpineBoneData::get_bone_name() { + SPINE_CHECK(bone_data, "") return bone_data->getName().buffer(); } Ref SpineBoneData::get_parent() { + SPINE_CHECK(bone_data, nullptr) auto p = bone_data->getParent(); - if (p == NULL) return NULL; + if (p == nullptr) return nullptr; Ref gd_bone_data(memnew(SpineBoneData)); gd_bone_data->set_spine_object(p); return gd_bone_data; } float SpineBoneData::get_length() { + SPINE_CHECK(bone_data, 0) return bone_data->getLength(); } + void SpineBoneData::set_length(float v) { + SPINE_CHECK(bone_data,) bone_data->setLength(v); } float SpineBoneData::get_x() { + SPINE_CHECK(bone_data, 0) return bone_data->getX(); } + void SpineBoneData::set_x(float v) { + SPINE_CHECK(bone_data,) bone_data->setX(v); } float SpineBoneData::get_y() { + SPINE_CHECK(bone_data, 0) return bone_data->getY(); } + void SpineBoneData::set_y(float v) { + SPINE_CHECK(bone_data,) bone_data->setY(v); } float SpineBoneData::get_rotation() { + SPINE_CHECK(bone_data, 0) return bone_data->getRotation(); } + void SpineBoneData::set_rotation(float v) { + SPINE_CHECK(bone_data,) bone_data->setRotation(v); } float SpineBoneData::get_scale_x() { + SPINE_CHECK(bone_data, 0) return bone_data->getScaleX(); } + void SpineBoneData::set_scale_x(float v) { + SPINE_CHECK(bone_data,) bone_data->setScaleX(v); } float SpineBoneData::get_scale_y() { + SPINE_CHECK(bone_data, 0) return bone_data->getScaleY(); } + void SpineBoneData::set_scale_y(float v) { + SPINE_CHECK(bone_data,) bone_data->setScaleY(v); } float SpineBoneData::get_shear_x() { + SPINE_CHECK(bone_data, 0) return bone_data->getShearX(); } + void SpineBoneData::set_shear_x(float v) { + SPINE_CHECK(bone_data,) bone_data->setShearX(v); } float SpineBoneData::get_shear_y() { + SPINE_CHECK(bone_data, 0) return bone_data->getShearY(); } + void SpineBoneData::set_shear_y(float v) { + SPINE_CHECK(bone_data,) bone_data->setShearY(v); } -SpineBoneData::TransformMode SpineBoneData::get_transform_mode() { - auto tm = (int) bone_data->getTransformMode(); - return (TransformMode) tm; +SpineConstant::TransformMode SpineBoneData::get_transform_mode() { + SPINE_CHECK(bone_data, SpineConstant::TransformMode::TransformMode_Normal) + return (SpineConstant::TransformMode) bone_data->getTransformMode(); } -void SpineBoneData::set_transform_mode(TransformMode v) { - auto tm = (int) v; - bone_data->setTransformMode((spine::TransformMode) tm); + +void SpineBoneData::set_transform_mode(SpineConstant::TransformMode v) { + SPINE_CHECK(bone_data,) + bone_data->setTransformMode((spine::TransformMode) v); } bool SpineBoneData::is_skin_required() { + SPINE_CHECK(bone_data, false) return bone_data->isSkinRequired(); } + void SpineBoneData::set_skin_required(bool v) { + SPINE_CHECK(bone_data,) bone_data->setSkinRequired(v); +} + +Color SpineBoneData::get_color() { + SPINE_CHECK(bone_data, Color()) + auto color = bone_data->getColor(); + return Color(color.r, color.g, color.b, color.a); +} + +void SpineBoneData::set_color(Color color) { + SPINE_CHECK(bone_data,) + bone_data->getColor().set(color.r, color.g, color.b, color.a); } \ No newline at end of file diff --git a/spine-godot/spine_godot/SpineBoneData.h b/spine-godot/spine_godot/SpineBoneData.h index dc3e3feb6..7d2d790df 100644 --- a/spine-godot/spine_godot/SpineBoneData.h +++ b/spine-godot/spine_godot/SpineBoneData.h @@ -30,9 +30,12 @@ #ifndef GODOT_SPINEBONEDATA_H #define GODOT_SPINEBONEDATA_H -#include "core/variant_parser.h" +#include "core/reference.h" +#include "SpineConstant.h" -#include +namespace spine { + class BoneData; +} class SpineBoneData : public Reference { GDCLASS(SpineBoneData, Reference); @@ -47,20 +50,9 @@ public: SpineBoneData(); ~SpineBoneData(); - inline void set_spine_object(spine::BoneData *b) { - bone_data = b; - } - inline spine::BoneData *get_spine_object() { - return bone_data; - } + void set_spine_object(spine::BoneData *_bone_data) { bone_data = _bone_data; } - enum TransformMode { - TRANSFORMMODE_NORMAL = 0, - TRANSFORMMODE_ONLYTRANSLATION, - TRANSFORMMODE_NOROTATIONORREFLECTION, - TRANSFORMMODE_NOSCALE, - TRANSFORMMODE_NOSCALEORREFLECTION - }; + spine::BoneData *get_spine_object() { return bone_data; } int get_index(); @@ -69,35 +61,48 @@ public: Ref get_parent(); float get_length(); + void set_length(float v); float get_x(); + void set_x(float v); float get_y(); + void set_y(float v); float get_rotation(); + void set_rotation(float v); float get_scale_x(); + void set_scale_x(float v); float get_scale_y(); + void set_scale_y(float v); float get_shear_x(); + void set_shear_x(float v); float get_shear_y(); + void set_shear_y(float v); - TransformMode get_transform_mode(); - void set_transform_mode(TransformMode v); + SpineConstant::TransformMode get_transform_mode(); + + void set_transform_mode(SpineConstant::TransformMode v); bool is_skin_required(); + void set_skin_required(bool v); + + Color get_color(); + + void set_color(Color color); }; -VARIANT_ENUM_CAST(SpineBoneData::TransformMode); #endif//GODOT_SPINEBONEDATA_H diff --git a/spine-godot/spine_godot/SpineConstant.cpp b/spine-godot/spine_godot/SpineConstant.cpp index 31c9d2100..522c4bd8e 100644 --- a/spine-godot/spine_godot/SpineConstant.cpp +++ b/spine-godot/spine_godot/SpineConstant.cpp @@ -30,32 +30,38 @@ #include "SpineConstant.h" void SpineConstant::_bind_methods() { - BIND_ENUM_CONSTANT(MixBlend_Setup); - BIND_ENUM_CONSTANT(MixBlend_First); - BIND_ENUM_CONSTANT(MixBlend_Replace); - BIND_ENUM_CONSTANT(MixBlend_Add); + BIND_ENUM_CONSTANT(MixBlend_Setup) + BIND_ENUM_CONSTANT(MixBlend_First) + BIND_ENUM_CONSTANT(MixBlend_Replace) + BIND_ENUM_CONSTANT(MixBlend_Add) - BIND_ENUM_CONSTANT(MixDirection_In); - BIND_ENUM_CONSTANT(MixDirection_Out); + BIND_ENUM_CONSTANT(MixDirection_In) + BIND_ENUM_CONSTANT(MixDirection_Out) - BIND_ENUM_CONSTANT(Property_Rotate); - BIND_ENUM_CONSTANT(Property_X); - BIND_ENUM_CONSTANT(Property_Y); - BIND_ENUM_CONSTANT(Property_ScaleX); - BIND_ENUM_CONSTANT(Property_ScaleY); - BIND_ENUM_CONSTANT(Property_ShearX); - BIND_ENUM_CONSTANT(Property_ShearY); - BIND_ENUM_CONSTANT(Property_Rgb); - BIND_ENUM_CONSTANT(Property_Alpha); - BIND_ENUM_CONSTANT(Property_Rgb2); - BIND_ENUM_CONSTANT(Property_Attachment); - BIND_ENUM_CONSTANT(Property_Deform); - BIND_ENUM_CONSTANT(Property_Event); - BIND_ENUM_CONSTANT(Property_DrawOrder); - BIND_ENUM_CONSTANT(Property_IkConstraint); - BIND_ENUM_CONSTANT(Property_TransformConstraint); - BIND_ENUM_CONSTANT(Property_PathConstraintPosition); - BIND_ENUM_CONSTANT(Property_PathConstraintSpacing); - BIND_ENUM_CONSTANT(Property_PathConstraintMix); - BIND_ENUM_CONSTANT(Property_Sequence); + BIND_ENUM_CONSTANT(Property_Rotate) + BIND_ENUM_CONSTANT(Property_X) + BIND_ENUM_CONSTANT(Property_Y) + BIND_ENUM_CONSTANT(Property_ScaleX) + BIND_ENUM_CONSTANT(Property_ScaleY) + BIND_ENUM_CONSTANT(Property_ShearX) + BIND_ENUM_CONSTANT(Property_ShearY) + BIND_ENUM_CONSTANT(Property_Rgb) + BIND_ENUM_CONSTANT(Property_Alpha) + BIND_ENUM_CONSTANT(Property_Rgb2) + BIND_ENUM_CONSTANT(Property_Attachment) + BIND_ENUM_CONSTANT(Property_Deform) + BIND_ENUM_CONSTANT(Property_Event) + BIND_ENUM_CONSTANT(Property_DrawOrder) + BIND_ENUM_CONSTANT(Property_IkConstraint) + BIND_ENUM_CONSTANT(Property_TransformConstraint) + BIND_ENUM_CONSTANT(Property_PathConstraintPosition) + BIND_ENUM_CONSTANT(Property_PathConstraintSpacing) + BIND_ENUM_CONSTANT(Property_PathConstraintMix) + BIND_ENUM_CONSTANT(Property_Sequence) + + BIND_ENUM_CONSTANT(TransformMode_Normal) + BIND_ENUM_CONSTANT(TransformMode_OnlyTranslation) + BIND_ENUM_CONSTANT(TransformMode_NoRotationOrReflection) + BIND_ENUM_CONSTANT(TransformMode_NoScale) + BIND_ENUM_CONSTANT(TransformMode_NoScaleOrReflection) } diff --git a/spine-godot/spine_godot/SpineConstant.h b/spine-godot/spine_godot/SpineConstant.h index b8357e9bd..c7de1f3c3 100644 --- a/spine-godot/spine_godot/SpineConstant.h +++ b/spine-godot/spine_godot/SpineConstant.h @@ -73,10 +73,19 @@ public: Property_PathConstraintMix = 1 << 18, Property_Sequence = 1 << 19 }; + + enum TransformMode { + TransformMode_Normal = 0, + TransformMode_OnlyTranslation, + TransformMode_NoRotationOrReflection, + TransformMode_NoScale, + TransformMode_NoScaleOrReflection + }; }; VARIANT_ENUM_CAST(SpineConstant::MixBlend); VARIANT_ENUM_CAST(SpineConstant::MixDirection); VARIANT_ENUM_CAST(SpineConstant::PropertyId); +VARIANT_ENUM_CAST(SpineConstant::TransformMode); #endif//GODOT_SPINECONSTANT_H