[godot] Clean-up SpineBoneData, move TransformMode to SpineConstant

This commit is contained in:
badlogic 2022-04-12 13:57:54 +02:00
parent b6018275f1
commit 34d3f34b25
4 changed files with 122 additions and 69 deletions

View File

@ -28,136 +28,169 @@
*****************************************************************************/ *****************************************************************************/
#include "SpineBoneData.h" #include "SpineBoneData.h"
#include <spine/BoneData.h>
#include "common.h"
void SpineBoneData::_bind_methods() { void SpineBoneData::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_index"), &SpineBoneData::get_index); 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_bone_name"), &SpineBoneData::get_bone_name);
ClassDB::bind_method(D_METHOD("get_parent"), &SpineBoneData::get_parent); 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("get_length"), &SpineBoneData::get_length);
ClassDB::bind_method(D_METHOD("set_length", "v"), &SpineBoneData::set_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("get_x"), &SpineBoneData::get_x);
ClassDB::bind_method(D_METHOD("set_x", "v"), &SpineBoneData::set_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("get_y"), &SpineBoneData::get_y);
ClassDB::bind_method(D_METHOD("set_y", "v"), &SpineBoneData::set_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("get_rotation"), &SpineBoneData::get_rotation);
ClassDB::bind_method(D_METHOD("set_rotation", "v"), &SpineBoneData::set_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("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("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("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("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("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("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("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("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("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("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("is_skin_required"), &SpineBoneData::is_skin_required);
ClassDB::bind_method(D_METHOD("set_skin_required", "v"), &SpineBoneData::set_skin_required); ClassDB::bind_method(D_METHOD("set_skin_required", "v"), &SpineBoneData::set_skin_required);
ClassDB::bind_method(D_METHOD("get_color"), &SpineBoneData::get_color);
BIND_ENUM_CONSTANT(TRANSFORMMODE_NORMAL); ClassDB::bind_method(D_METHOD("set_color", "v"), &SpineBoneData::set_color);
BIND_ENUM_CONSTANT(TRANSFORMMODE_ONLYTRANSLATION);
BIND_ENUM_CONSTANT(TRANSFORMMODE_NOROTATIONORREFLECTION);
BIND_ENUM_CONSTANT(TRANSFORMMODE_NOSCALE);
BIND_ENUM_CONSTANT(TRANSFORMMODE_NOSCALEORREFLECTION);
} }
SpineBoneData::SpineBoneData() : bone_data(NULL) {} SpineBoneData::SpineBoneData() : bone_data(nullptr) {
SpineBoneData::~SpineBoneData() {} }
SpineBoneData::~SpineBoneData() {
}
int SpineBoneData::get_index() { int SpineBoneData::get_index() {
SPINE_CHECK(bone_data, 0)
return bone_data->getIndex(); return bone_data->getIndex();
} }
String SpineBoneData::get_bone_name() { String SpineBoneData::get_bone_name() {
SPINE_CHECK(bone_data, "")
return bone_data->getName().buffer(); return bone_data->getName().buffer();
} }
Ref<SpineBoneData> SpineBoneData::get_parent() { Ref<SpineBoneData> SpineBoneData::get_parent() {
SPINE_CHECK(bone_data, nullptr)
auto p = bone_data->getParent(); auto p = bone_data->getParent();
if (p == NULL) return NULL; if (p == nullptr) return nullptr;
Ref<SpineBoneData> gd_bone_data(memnew(SpineBoneData)); Ref<SpineBoneData> gd_bone_data(memnew(SpineBoneData));
gd_bone_data->set_spine_object(p); gd_bone_data->set_spine_object(p);
return gd_bone_data; return gd_bone_data;
} }
float SpineBoneData::get_length() { float SpineBoneData::get_length() {
SPINE_CHECK(bone_data, 0)
return bone_data->getLength(); return bone_data->getLength();
} }
void SpineBoneData::set_length(float v) { void SpineBoneData::set_length(float v) {
SPINE_CHECK(bone_data,)
bone_data->setLength(v); bone_data->setLength(v);
} }
float SpineBoneData::get_x() { float SpineBoneData::get_x() {
SPINE_CHECK(bone_data, 0)
return bone_data->getX(); return bone_data->getX();
} }
void SpineBoneData::set_x(float v) { void SpineBoneData::set_x(float v) {
SPINE_CHECK(bone_data,)
bone_data->setX(v); bone_data->setX(v);
} }
float SpineBoneData::get_y() { float SpineBoneData::get_y() {
SPINE_CHECK(bone_data, 0)
return bone_data->getY(); return bone_data->getY();
} }
void SpineBoneData::set_y(float v) { void SpineBoneData::set_y(float v) {
SPINE_CHECK(bone_data,)
bone_data->setY(v); bone_data->setY(v);
} }
float SpineBoneData::get_rotation() { float SpineBoneData::get_rotation() {
SPINE_CHECK(bone_data, 0)
return bone_data->getRotation(); return bone_data->getRotation();
} }
void SpineBoneData::set_rotation(float v) { void SpineBoneData::set_rotation(float v) {
SPINE_CHECK(bone_data,)
bone_data->setRotation(v); bone_data->setRotation(v);
} }
float SpineBoneData::get_scale_x() { float SpineBoneData::get_scale_x() {
SPINE_CHECK(bone_data, 0)
return bone_data->getScaleX(); return bone_data->getScaleX();
} }
void SpineBoneData::set_scale_x(float v) { void SpineBoneData::set_scale_x(float v) {
SPINE_CHECK(bone_data,)
bone_data->setScaleX(v); bone_data->setScaleX(v);
} }
float SpineBoneData::get_scale_y() { float SpineBoneData::get_scale_y() {
SPINE_CHECK(bone_data, 0)
return bone_data->getScaleY(); return bone_data->getScaleY();
} }
void SpineBoneData::set_scale_y(float v) { void SpineBoneData::set_scale_y(float v) {
SPINE_CHECK(bone_data,)
bone_data->setScaleY(v); bone_data->setScaleY(v);
} }
float SpineBoneData::get_shear_x() { float SpineBoneData::get_shear_x() {
SPINE_CHECK(bone_data, 0)
return bone_data->getShearX(); return bone_data->getShearX();
} }
void SpineBoneData::set_shear_x(float v) { void SpineBoneData::set_shear_x(float v) {
SPINE_CHECK(bone_data,)
bone_data->setShearX(v); bone_data->setShearX(v);
} }
float SpineBoneData::get_shear_y() { float SpineBoneData::get_shear_y() {
SPINE_CHECK(bone_data, 0)
return bone_data->getShearY(); return bone_data->getShearY();
} }
void SpineBoneData::set_shear_y(float v) { void SpineBoneData::set_shear_y(float v) {
SPINE_CHECK(bone_data,)
bone_data->setShearY(v); bone_data->setShearY(v);
} }
SpineBoneData::TransformMode SpineBoneData::get_transform_mode() { SpineConstant::TransformMode SpineBoneData::get_transform_mode() {
auto tm = (int) bone_data->getTransformMode(); SPINE_CHECK(bone_data, SpineConstant::TransformMode::TransformMode_Normal)
return (TransformMode) tm; return (SpineConstant::TransformMode) bone_data->getTransformMode();
} }
void SpineBoneData::set_transform_mode(TransformMode v) {
auto tm = (int) v; void SpineBoneData::set_transform_mode(SpineConstant::TransformMode v) {
bone_data->setTransformMode((spine::TransformMode) tm); SPINE_CHECK(bone_data,)
bone_data->setTransformMode((spine::TransformMode) v);
} }
bool SpineBoneData::is_skin_required() { bool SpineBoneData::is_skin_required() {
SPINE_CHECK(bone_data, false)
return bone_data->isSkinRequired(); return bone_data->isSkinRequired();
} }
void SpineBoneData::set_skin_required(bool v) { void SpineBoneData::set_skin_required(bool v) {
SPINE_CHECK(bone_data,)
bone_data->setSkinRequired(v); 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);
}

View File

@ -30,9 +30,12 @@
#ifndef GODOT_SPINEBONEDATA_H #ifndef GODOT_SPINEBONEDATA_H
#define GODOT_SPINEBONEDATA_H #define GODOT_SPINEBONEDATA_H
#include "core/variant_parser.h" #include "core/reference.h"
#include "SpineConstant.h"
#include <spine/spine.h> namespace spine {
class BoneData;
}
class SpineBoneData : public Reference { class SpineBoneData : public Reference {
GDCLASS(SpineBoneData, Reference); GDCLASS(SpineBoneData, Reference);
@ -47,20 +50,9 @@ public:
SpineBoneData(); SpineBoneData();
~SpineBoneData(); ~SpineBoneData();
inline void set_spine_object(spine::BoneData *b) { void set_spine_object(spine::BoneData *_bone_data) { bone_data = _bone_data; }
bone_data = b;
}
inline spine::BoneData *get_spine_object() {
return bone_data;
}
enum TransformMode { spine::BoneData *get_spine_object() { return bone_data; }
TRANSFORMMODE_NORMAL = 0,
TRANSFORMMODE_ONLYTRANSLATION,
TRANSFORMMODE_NOROTATIONORREFLECTION,
TRANSFORMMODE_NOSCALE,
TRANSFORMMODE_NOSCALEORREFLECTION
};
int get_index(); int get_index();
@ -69,35 +61,48 @@ public:
Ref<SpineBoneData> get_parent(); Ref<SpineBoneData> get_parent();
float get_length(); float get_length();
void set_length(float v); void set_length(float v);
float get_x(); float get_x();
void set_x(float v); void set_x(float v);
float get_y(); float get_y();
void set_y(float v); void set_y(float v);
float get_rotation(); float get_rotation();
void set_rotation(float v); void set_rotation(float v);
float get_scale_x(); float get_scale_x();
void set_scale_x(float v); void set_scale_x(float v);
float get_scale_y(); float get_scale_y();
void set_scale_y(float v); void set_scale_y(float v);
float get_shear_x(); float get_shear_x();
void set_shear_x(float v); void set_shear_x(float v);
float get_shear_y(); float get_shear_y();
void set_shear_y(float v); void set_shear_y(float v);
TransformMode get_transform_mode(); SpineConstant::TransformMode get_transform_mode();
void set_transform_mode(TransformMode v);
void set_transform_mode(SpineConstant::TransformMode v);
bool is_skin_required(); bool is_skin_required();
void set_skin_required(bool v); void set_skin_required(bool v);
Color get_color();
void set_color(Color color);
}; };
VARIANT_ENUM_CAST(SpineBoneData::TransformMode);
#endif//GODOT_SPINEBONEDATA_H #endif//GODOT_SPINEBONEDATA_H

View File

@ -30,32 +30,38 @@
#include "SpineConstant.h" #include "SpineConstant.h"
void SpineConstant::_bind_methods() { void SpineConstant::_bind_methods() {
BIND_ENUM_CONSTANT(MixBlend_Setup); BIND_ENUM_CONSTANT(MixBlend_Setup)
BIND_ENUM_CONSTANT(MixBlend_First); BIND_ENUM_CONSTANT(MixBlend_First)
BIND_ENUM_CONSTANT(MixBlend_Replace); BIND_ENUM_CONSTANT(MixBlend_Replace)
BIND_ENUM_CONSTANT(MixBlend_Add); BIND_ENUM_CONSTANT(MixBlend_Add)
BIND_ENUM_CONSTANT(MixDirection_In); BIND_ENUM_CONSTANT(MixDirection_In)
BIND_ENUM_CONSTANT(MixDirection_Out); BIND_ENUM_CONSTANT(MixDirection_Out)
BIND_ENUM_CONSTANT(Property_Rotate); BIND_ENUM_CONSTANT(Property_Rotate)
BIND_ENUM_CONSTANT(Property_X); BIND_ENUM_CONSTANT(Property_X)
BIND_ENUM_CONSTANT(Property_Y); BIND_ENUM_CONSTANT(Property_Y)
BIND_ENUM_CONSTANT(Property_ScaleX); BIND_ENUM_CONSTANT(Property_ScaleX)
BIND_ENUM_CONSTANT(Property_ScaleY); BIND_ENUM_CONSTANT(Property_ScaleY)
BIND_ENUM_CONSTANT(Property_ShearX); BIND_ENUM_CONSTANT(Property_ShearX)
BIND_ENUM_CONSTANT(Property_ShearY); BIND_ENUM_CONSTANT(Property_ShearY)
BIND_ENUM_CONSTANT(Property_Rgb); BIND_ENUM_CONSTANT(Property_Rgb)
BIND_ENUM_CONSTANT(Property_Alpha); BIND_ENUM_CONSTANT(Property_Alpha)
BIND_ENUM_CONSTANT(Property_Rgb2); BIND_ENUM_CONSTANT(Property_Rgb2)
BIND_ENUM_CONSTANT(Property_Attachment); BIND_ENUM_CONSTANT(Property_Attachment)
BIND_ENUM_CONSTANT(Property_Deform); BIND_ENUM_CONSTANT(Property_Deform)
BIND_ENUM_CONSTANT(Property_Event); BIND_ENUM_CONSTANT(Property_Event)
BIND_ENUM_CONSTANT(Property_DrawOrder); BIND_ENUM_CONSTANT(Property_DrawOrder)
BIND_ENUM_CONSTANT(Property_IkConstraint); BIND_ENUM_CONSTANT(Property_IkConstraint)
BIND_ENUM_CONSTANT(Property_TransformConstraint); BIND_ENUM_CONSTANT(Property_TransformConstraint)
BIND_ENUM_CONSTANT(Property_PathConstraintPosition); BIND_ENUM_CONSTANT(Property_PathConstraintPosition)
BIND_ENUM_CONSTANT(Property_PathConstraintSpacing); BIND_ENUM_CONSTANT(Property_PathConstraintSpacing)
BIND_ENUM_CONSTANT(Property_PathConstraintMix); BIND_ENUM_CONSTANT(Property_PathConstraintMix)
BIND_ENUM_CONSTANT(Property_Sequence); 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)
} }

View File

@ -73,10 +73,19 @@ public:
Property_PathConstraintMix = 1 << 18, Property_PathConstraintMix = 1 << 18,
Property_Sequence = 1 << 19 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::MixBlend);
VARIANT_ENUM_CAST(SpineConstant::MixDirection); VARIANT_ENUM_CAST(SpineConstant::MixDirection);
VARIANT_ENUM_CAST(SpineConstant::PropertyId); VARIANT_ENUM_CAST(SpineConstant::PropertyId);
VARIANT_ENUM_CAST(SpineConstant::TransformMode);
#endif//GODOT_SPINECONSTANT_H #endif//GODOT_SPINECONSTANT_H