diff --git a/spine-godot/spine_godot/SpineCollisionShapeProxy.cpp b/spine-godot/spine_godot/SpineCollisionShapeProxy.cpp index 20ddd7ed6..67dd917bc 100644 --- a/spine-godot/spine_godot/SpineCollisionShapeProxy.cpp +++ b/spine-godot/spine_godot/SpineCollisionShapeProxy.cpp @@ -189,6 +189,6 @@ void SpineCollisionShapeProxy::get_slot_names(Vector &slot_names) const for (size_t i = 0; i < slots.size(); ++i) { auto slot = (Ref) slots[i]; if (slot.is_valid()) - slot_names.set(i, slot->get_data()->get_slot_name()); + slot_names.set(i, slot->get_data()->get_name()); } } diff --git a/spine-godot/spine_godot/SpineConstant.cpp b/spine-godot/spine_godot/SpineConstant.cpp index 62d6ac6d1..027a35011 100644 --- a/spine-godot/spine_godot/SpineConstant.cpp +++ b/spine-godot/spine_godot/SpineConstant.cpp @@ -75,4 +75,9 @@ void SpineConstant::_bind_methods() { BIND_ENUM_CONSTANT(RotateMode_Tangent) BIND_ENUM_CONSTANT(RotateMode_Chain) BIND_ENUM_CONSTANT(RotateMode_ChainScale) + + BIND_ENUM_CONSTANT(BLENDMODE_NORMAL) + BIND_ENUM_CONSTANT(BLENDMODE_ADDITIVE) + BIND_ENUM_CONSTANT(BLENDMODE_MULTIPLY) + BIND_ENUM_CONSTANT(BLENDMODE_SCREEN) } diff --git a/spine-godot/spine_godot/SpineConstant.h b/spine-godot/spine_godot/SpineConstant.h index 8d4e2a230..14b79c04d 100644 --- a/spine-godot/spine_godot/SpineConstant.h +++ b/spine-godot/spine_godot/SpineConstant.h @@ -98,6 +98,13 @@ public: RotateMode_Chain, RotateMode_ChainScale }; + + enum BlendMode { + BLENDMODE_NORMAL = 0, + BLENDMODE_ADDITIVE, + BLENDMODE_MULTIPLY, + BLENDMODE_SCREEN + }; }; VARIANT_ENUM_CAST(SpineConstant::MixBlend); @@ -107,5 +114,6 @@ VARIANT_ENUM_CAST(SpineConstant::TransformMode); VARIANT_ENUM_CAST(SpineConstant::PositionMode); VARIANT_ENUM_CAST(SpineConstant::SpacingMode); VARIANT_ENUM_CAST(SpineConstant::RotateMode); +VARIANT_ENUM_CAST(SpineConstant::BlendMode); #endif//GODOT_SPINECONSTANT_H diff --git a/spine-godot/spine_godot/SpineSlotData.cpp b/spine-godot/spine_godot/SpineSlotData.cpp index bf3c48f20..076db77eb 100644 --- a/spine-godot/spine_godot/SpineSlotData.cpp +++ b/spine-godot/spine_godot/SpineSlotData.cpp @@ -28,13 +28,16 @@ *****************************************************************************/ #include "SpineSlotData.h" +#include "SpineCommon.h" void SpineSlotData::_bind_methods() { ClassDB::bind_method(D_METHOD("get_index"), &SpineSlotData::get_index); - ClassDB::bind_method(D_METHOD("get_slot_name"), &SpineSlotData::get_slot_name); + ClassDB::bind_method(D_METHOD("get_name"), &SpineSlotData::get_name); ClassDB::bind_method(D_METHOD("get_bone_data"), &SpineSlotData::get_bone_data); ClassDB::bind_method(D_METHOD("get_color"), &SpineSlotData::get_color); + ClassDB::bind_method(D_METHOD("set_color", "v"), &SpineSlotData::set_color); ClassDB::bind_method(D_METHOD("get_dark_color"), &SpineSlotData::get_dark_color); + ClassDB::bind_method(D_METHOD("set_dark_color", "v"), &SpineSlotData::set_dark_color); ClassDB::bind_method(D_METHOD("has_dark_color"), &SpineSlotData::has_dark_color); ClassDB::bind_method(D_METHOD("set_has_dark_color", "v"), &SpineSlotData::set_has_dark_color); ClassDB::bind_method(D_METHOD("get_attachment_name"), &SpineSlotData::get_attachment_name); @@ -42,73 +45,77 @@ void SpineSlotData::_bind_methods() { ClassDB::bind_method(D_METHOD("get_blend_mode"), &SpineSlotData::get_blend_mode); ClassDB::bind_method(D_METHOD("set_blend_mode", "v"), &SpineSlotData::set_blend_mode); - ClassDB::bind_method(D_METHOD("set_color", "v"), &SpineSlotData::set_color); - ClassDB::bind_method(D_METHOD("set_dark_color", "v"), &SpineSlotData::set_dark_color); - - BIND_ENUM_CONSTANT(BLENDMODE_NORMAL); - BIND_ENUM_CONSTANT(BLENDMODE_ADDITIVE); - BIND_ENUM_CONSTANT(BLENDMODE_MULTIPLY); - BIND_ENUM_CONSTANT(BLENDMODE_SCREEN); } -SpineSlotData::SpineSlotData() : slot_data(NULL) {} -SpineSlotData::~SpineSlotData() {} +SpineSlotData::SpineSlotData() : slot_data(nullptr) { +} -#define S_T(x) (spine::String(x.utf8())) int SpineSlotData::get_index() { + SPINE_CHECK(slot_data, 0) return slot_data->getIndex(); } -String SpineSlotData::get_slot_name() { +String SpineSlotData::get_name() { + SPINE_CHECK(slot_data, String("")) return slot_data->getName().buffer(); } Ref SpineSlotData::get_bone_data() { - auto &bd = slot_data->getBoneData(); - Ref gd_bone_data(memnew(SpineBoneData)); - gd_bone_data->set_spine_object(&bd); - return gd_bone_data; + SPINE_CHECK(slot_data, nullptr) + auto &bone_data = slot_data->getBoneData(); + Ref bone_data_ref(memnew(SpineBoneData)); + bone_data_ref->set_spine_object(&bone_data); + return bone_data_ref; } Color SpineSlotData::get_color() { - auto &c = slot_data->getColor(); - return Color(c.r, c.g, c.b, c.a); + SPINE_CHECK(slot_data, Color(0, 0, 0, 0)) + auto &color = slot_data->getColor(); + return Color(color.r, color.g, color.b, color.a); } + void SpineSlotData::set_color(Color v) { - auto &c = slot_data->getColor(); - c.set(v.r, v.g, v.b, v.a); + SPINE_CHECK(slot_data,) + auto &color = slot_data->getColor(); + color.set(v.r, v.g, v.b, v.a); } Color SpineSlotData::get_dark_color() { - auto &c = slot_data->getDarkColor(); - return Color(c.r, c.g, c.b, c.a); + SPINE_CHECK(slot_data, Color(0, 0, 0, 0)) + auto &color = slot_data->getDarkColor(); + return Color(color.r, color.g, color.b, color.a); } + void SpineSlotData::set_dark_color(Color v) { - auto &c = slot_data->getDarkColor(); - c.set(v.r, v.g, v.b, v.a); + SPINE_CHECK(slot_data,) + auto &color = slot_data->getDarkColor(); + color.set(v.r, v.g, v.b, v.a); } bool SpineSlotData::has_dark_color() { + SPINE_CHECK(slot_data, false) return slot_data->hasDarkColor(); } + void SpineSlotData::set_has_dark_color(bool v) { + SPINE_CHECK(slot_data,) slot_data->setHasDarkColor(v); } String SpineSlotData::get_attachment_name() { + SPINE_CHECK(slot_data, "") return slot_data->getAttachmentName().buffer(); } void SpineSlotData::set_attachment_name(const String &v) { - slot_data->setAttachmentName(S_T(v)); + SPINE_CHECK(slot_data,) + slot_data->setAttachmentName(SPINE_STRING(v)); } -SpineSlotData::BlendMode SpineSlotData::get_blend_mode() { - auto bm = (int) slot_data->getBlendMode(); - return (BlendMode) bm; +SpineConstant::BlendMode SpineSlotData::get_blend_mode() { + SPINE_CHECK(slot_data, SpineConstant::BLENDMODE_NORMAL) + return (SpineConstant::BlendMode)slot_data->getBlendMode(); } -void SpineSlotData::set_blend_mode(BlendMode v) { - auto bm = (int) v; - slot_data->setBlendMode((spine::BlendMode) bm); +void SpineSlotData::set_blend_mode(SpineConstant::BlendMode v) { + SPINE_CHECK(slot_data,) + slot_data->setBlendMode((spine::BlendMode) v); } - -#undef S_T \ No newline at end of file diff --git a/spine-godot/spine_godot/SpineSlotData.h b/spine-godot/spine_godot/SpineSlotData.h index 1778bba55..66af145e3 100644 --- a/spine-godot/spine_godot/SpineSlotData.h +++ b/spine-godot/spine_godot/SpineSlotData.h @@ -29,11 +29,10 @@ #ifndef GODOT_SPINESLOTDATA_H #define GODOT_SPINESLOTDATA_H -#include "core/variant_parser.h" - -#include +#include "core/object.h" #include "SpineBoneData.h" +#include class SpineSlotData : public Reference { GDCLASS(SpineSlotData, Reference); @@ -46,43 +45,35 @@ private: public: SpineSlotData(); - ~SpineSlotData(); - inline void set_spine_object(spine::SlotData *s) { - slot_data = s; - } - inline spine::SlotData *get_spine_object() { - return slot_data; - } - - enum BlendMode { - BLENDMODE_NORMAL = 0, - BLENDMODE_ADDITIVE, - BLENDMODE_MULTIPLY, - BLENDMODE_SCREEN - }; + void set_spine_object(spine::SlotData *s) { slot_data = s; } + spine::SlotData *get_spine_object() { return slot_data; } int get_index(); - String get_slot_name(); + String get_name(); Ref get_bone_data(); Color get_color(); + void set_color(Color c); Color get_dark_color(); + void set_dark_color(Color c); bool has_dark_color(); + void set_has_dark_color(bool v); String get_attachment_name(); + void set_attachment_name(const String &v); - BlendMode get_blend_mode(); - void set_blend_mode(BlendMode v); + SpineConstant::BlendMode get_blend_mode(); + + void set_blend_mode(SpineConstant::BlendMode v); }; -VARIANT_ENUM_CAST(SpineSlotData::BlendMode); #endif//GODOT_SPINESLOTDATA_H