mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
Merge branch '4.1' into 4.2-beta
This commit is contained in:
commit
14547392bc
@ -410,7 +410,7 @@ void SpineBone::set_active(bool v) {
|
||||
Transform2D SpineBone::get_transform() {
|
||||
SPINE_CHECK(get_spine_object(), Transform2D())
|
||||
Transform2D transform;
|
||||
transform.rotate(Math::deg2rad(get_rotation()));
|
||||
transform.rotate(spine::MathUtil::Deg_Rad * get_rotation());
|
||||
transform.scale(Size2(get_scale_x(), get_scale_y()));
|
||||
transform.set_origin(Vector2(get_x(), get_y()));
|
||||
return transform;
|
||||
@ -419,7 +419,7 @@ Transform2D SpineBone::get_transform() {
|
||||
void SpineBone::set_transform(Transform2D transform) {
|
||||
SPINE_CHECK(get_spine_object(), )
|
||||
Vector2 position = transform.get_origin();
|
||||
float rotation = Math::rad2deg(transform.get_rotation());
|
||||
float rotation = spine::MathUtil::Rad_Deg * transform.get_rotation();
|
||||
Vector2 scale = transform.get_scale();
|
||||
|
||||
set_x(position.x);
|
||||
@ -436,7 +436,7 @@ Transform2D SpineBone::get_global_transform() {
|
||||
if (!get_spine_owner()) return get_transform();
|
||||
if (!get_spine_owner()->is_visible_in_tree()) return get_transform();
|
||||
Transform2D local;
|
||||
local.rotate(Math::deg2rad(get_world_rotation_x()));
|
||||
local.rotate(spine::MathUtil::Deg_Rad * get_world_rotation_x());
|
||||
local.scale(Vector2(get_world_scale_x(), get_world_scale_y()));
|
||||
local.set_origin(Vector2(get_world_x(), get_world_y()));
|
||||
return get_spine_owner()->get_global_transform() * local;
|
||||
@ -452,7 +452,7 @@ void SpineBone::set_global_transform(Transform2D transform) {
|
||||
Transform2D inverse_sprite_transform = get_spine_owner()->get_global_transform().affine_inverse();
|
||||
transform = inverse_sprite_transform * transform;
|
||||
Vector2 position = transform.get_origin();
|
||||
float rotation = Math::rad2deg(transform.get_rotation());
|
||||
float rotation = spine::MathUtil::Rad_Deg * transform.get_rotation();
|
||||
Vector2 scale = transform.get_scale();
|
||||
Vector2 local_position = position;
|
||||
float local_rotation = bone->worldToLocalRotation(rotation) - 180;
|
||||
|
||||
@ -141,7 +141,11 @@ bool SpineBoneNode::_set(const StringName &property, const Variant &value) {
|
||||
void SpineBoneNode::on_world_transforms_changed(const Variant &_sprite) {
|
||||
SpineSprite *sprite = cast_to<SpineSprite>(_sprite.operator Object *());
|
||||
update_transform(sprite);
|
||||
#if VERSION_MAJOR > 3
|
||||
queue_redraw();
|
||||
#else
|
||||
update();
|
||||
#endif
|
||||
}
|
||||
|
||||
void SpineBoneNode::update_transform(SpineSprite *sprite) {
|
||||
|
||||
@ -253,7 +253,7 @@ void SpineEditorPropertyAnimationMix::_bind_methods() {
|
||||
void SpineEditorPropertyAnimationMix::data_changed(const String &property, const Variant &value, const String &name, bool changing) {
|
||||
auto mix = Object::cast_to<SpineAnimationMix>(get_edited_object()->get(get_edited_property()));
|
||||
|
||||
UndoRedo *undo_redo = EditorNode::get_undo_redo();
|
||||
auto undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action("Set mix property " + property);
|
||||
undo_redo->add_do_property(mix, property, value);
|
||||
undo_redo->add_undo_property(mix, property, mix->get(property));
|
||||
|
||||
@ -483,7 +483,11 @@ void SpineSprite::update_skeleton(float delta) {
|
||||
if (modified_bones) skeleton->update_world_transform();
|
||||
sort_slot_nodes();
|
||||
update_meshes(skeleton);
|
||||
#if VERSION_MAJOR > 3
|
||||
queue_redraw();
|
||||
#else
|
||||
update();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void clear_mesh_instance(MeshInstance2D *mesh_instance) {
|
||||
@ -794,7 +798,7 @@ void SpineSprite::draw() {
|
||||
scratch_points.set(2, Vector2(bone_length, 0));
|
||||
scratch_points.set(3, Vector2(0, -debug_bones_thickness));
|
||||
scratch_points.set(4, Vector2(-debug_bones_thickness, 0));
|
||||
Transform2D bone_transform(Math::deg2rad(bone->getWorldRotationX()), Vector2(bone->getWorldX(), bone->getWorldY()));
|
||||
Transform2D bone_transform(spine::MathUtil::Deg_Rad * bone->getWorldRotationX(), Vector2(bone->getWorldX(), bone->getWorldY()));
|
||||
bone_transform.scale_basis(Vector2(bone->getWorldScaleX(), bone->getWorldScaleY()));
|
||||
auto mouse_local_position = bone_transform.affine_inverse().xform(mouse_position);
|
||||
if (GEOMETRY2D::is_point_in_polygon(mouse_local_position, scratch_points)) {
|
||||
@ -858,7 +862,7 @@ void SpineSprite::draw() {
|
||||
}
|
||||
|
||||
void SpineSprite::draw_bone(spine::Bone *bone, const Color &color) {
|
||||
draw_set_transform(Vector2(bone->getWorldX(), bone->getWorldY()), Math::deg2rad(bone->getWorldRotationX()), Vector2(bone->getWorldScaleX(), bone->getWorldScaleY()));
|
||||
draw_set_transform(Vector2(bone->getWorldX(), bone->getWorldY()), spine::MathUtil::Deg_Rad * bone->getWorldRotationX(), Vector2(bone->getWorldScaleX(), bone->getWorldScaleY()));
|
||||
float bone_length = bone->getData().getLength();
|
||||
if (bone_length == 0) bone_length = debug_bones_thickness * 2;
|
||||
Vector<Vector2> points;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user