[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 <spine/BoneData.h>
#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> SpineBoneData::get_parent() {
SPINE_CHECK(bone_data, nullptr)
auto p = bone_data->getParent();
if (p == NULL) return NULL;
if (p == nullptr) return nullptr;
Ref<SpineBoneData> 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);
}

View File

@ -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 <spine/spine.h>
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<SpineBoneData> 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

View File

@ -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)
}

View File

@ -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