Browse Source

[godot] Clean-up SpineSlotData

Mario Zechner 3 năm trước cách đây
mục cha
commit
44cecb6b2d

+ 1 - 1
spine-godot/spine_godot/SpineCollisionShapeProxy.cpp

@@ -189,6 +189,6 @@ void SpineCollisionShapeProxy::get_slot_names(Vector<String> &slot_names) const
 	for (size_t i = 0; i < slots.size(); ++i) {
 		auto slot = (Ref<SpineSlot>) 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());
 	}
 }

+ 5 - 0
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)
 }

+ 8 - 0
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

+ 40 - 33
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<SpineBoneData> SpineSlotData::get_bone_data() {
-	auto &bd = slot_data->getBoneData();
-	Ref<SpineBoneData> 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<SpineBoneData> 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

+ 13 - 22
spine-godot/spine_godot/SpineSlotData.h

@@ -29,11 +29,10 @@
 
 #ifndef GODOT_SPINESLOTDATA_H
 #define GODOT_SPINESLOTDATA_H
-#include "core/variant_parser.h"
-
-#include <spine/spine.h>
 
+#include "core/object.h"
 #include "SpineBoneData.h"
+#include <spine/SlotData.h>
 
 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<SpineBoneData> 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