mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-05 02:06:53 +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() {
|
Transform2D SpineBone::get_transform() {
|
||||||
SPINE_CHECK(get_spine_object(), Transform2D())
|
SPINE_CHECK(get_spine_object(), Transform2D())
|
||||||
Transform2D transform;
|
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.scale(Size2(get_scale_x(), get_scale_y()));
|
||||||
transform.set_origin(Vector2(get_x(), get_y()));
|
transform.set_origin(Vector2(get_x(), get_y()));
|
||||||
return transform;
|
return transform;
|
||||||
@ -419,7 +419,7 @@ Transform2D SpineBone::get_transform() {
|
|||||||
void SpineBone::set_transform(Transform2D transform) {
|
void SpineBone::set_transform(Transform2D transform) {
|
||||||
SPINE_CHECK(get_spine_object(), )
|
SPINE_CHECK(get_spine_object(), )
|
||||||
Vector2 position = transform.get_origin();
|
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 scale = transform.get_scale();
|
||||||
|
|
||||||
set_x(position.x);
|
set_x(position.x);
|
||||||
@ -436,7 +436,7 @@ Transform2D SpineBone::get_global_transform() {
|
|||||||
if (!get_spine_owner()) return get_transform();
|
if (!get_spine_owner()) return get_transform();
|
||||||
if (!get_spine_owner()->is_visible_in_tree()) return get_transform();
|
if (!get_spine_owner()->is_visible_in_tree()) return get_transform();
|
||||||
Transform2D local;
|
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.scale(Vector2(get_world_scale_x(), get_world_scale_y()));
|
||||||
local.set_origin(Vector2(get_world_x(), get_world_y()));
|
local.set_origin(Vector2(get_world_x(), get_world_y()));
|
||||||
return get_spine_owner()->get_global_transform() * local;
|
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();
|
Transform2D inverse_sprite_transform = get_spine_owner()->get_global_transform().affine_inverse();
|
||||||
transform = inverse_sprite_transform * transform;
|
transform = inverse_sprite_transform * transform;
|
||||||
Vector2 position = transform.get_origin();
|
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 scale = transform.get_scale();
|
||||||
Vector2 local_position = position;
|
Vector2 local_position = position;
|
||||||
float local_rotation = bone->worldToLocalRotation(rotation) - 180;
|
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) {
|
void SpineBoneNode::on_world_transforms_changed(const Variant &_sprite) {
|
||||||
SpineSprite *sprite = cast_to<SpineSprite>(_sprite.operator Object *());
|
SpineSprite *sprite = cast_to<SpineSprite>(_sprite.operator Object *());
|
||||||
update_transform(sprite);
|
update_transform(sprite);
|
||||||
|
#if VERSION_MAJOR > 3
|
||||||
|
queue_redraw();
|
||||||
|
#else
|
||||||
update();
|
update();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpineBoneNode::update_transform(SpineSprite *sprite) {
|
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) {
|
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()));
|
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->create_action("Set mix property " + property);
|
||||||
undo_redo->add_do_property(mix, property, value);
|
undo_redo->add_do_property(mix, property, value);
|
||||||
undo_redo->add_undo_property(mix, property, mix->get(property));
|
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();
|
if (modified_bones) skeleton->update_world_transform();
|
||||||
sort_slot_nodes();
|
sort_slot_nodes();
|
||||||
update_meshes(skeleton);
|
update_meshes(skeleton);
|
||||||
|
#if VERSION_MAJOR > 3
|
||||||
|
queue_redraw();
|
||||||
|
#else
|
||||||
update();
|
update();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void clear_mesh_instance(MeshInstance2D *mesh_instance) {
|
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(2, Vector2(bone_length, 0));
|
||||||
scratch_points.set(3, Vector2(0, -debug_bones_thickness));
|
scratch_points.set(3, Vector2(0, -debug_bones_thickness));
|
||||||
scratch_points.set(4, Vector2(-debug_bones_thickness, 0));
|
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()));
|
bone_transform.scale_basis(Vector2(bone->getWorldScaleX(), bone->getWorldScaleY()));
|
||||||
auto mouse_local_position = bone_transform.affine_inverse().xform(mouse_position);
|
auto mouse_local_position = bone_transform.affine_inverse().xform(mouse_position);
|
||||||
if (GEOMETRY2D::is_point_in_polygon(mouse_local_position, scratch_points)) {
|
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) {
|
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();
|
float bone_length = bone->getData().getLength();
|
||||||
if (bone_length == 0) bone_length = debug_bones_thickness * 2;
|
if (bone_length == 0) bone_length = debug_bones_thickness * 2;
|
||||||
Vector<Vector2> points;
|
Vector<Vector2> points;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user