mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[godot] Only return global transforms is SpineSprite is visible in tree.
This commit is contained in:
parent
30ef5d350a
commit
9f5eaf89a8
@ -465,6 +465,7 @@ void SpineBone::set_transform(Transform2D transform) {
|
|||||||
Transform2D SpineBone::get_global_transform() {
|
Transform2D SpineBone::get_global_transform() {
|
||||||
SPINE_CHECK(bone, Transform2D())
|
SPINE_CHECK(bone, Transform2D())
|
||||||
if (!sprite) return get_transform();
|
if (!sprite) return get_transform();
|
||||||
|
if (!sprite->is_visible_in_tree()) return get_transform();
|
||||||
Transform2D local;
|
Transform2D local;
|
||||||
local.rotate(Math::deg2rad(-get_world_rotation_x()));
|
local.rotate(Math::deg2rad(-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()));
|
||||||
@ -475,6 +476,7 @@ Transform2D SpineBone::get_global_transform() {
|
|||||||
void SpineBone::set_global_transform(Transform2D transform) {
|
void SpineBone::set_global_transform(Transform2D transform) {
|
||||||
SPINE_CHECK(bone,)
|
SPINE_CHECK(bone,)
|
||||||
if (!sprite) set_transform(transform);
|
if (!sprite) set_transform(transform);
|
||||||
|
if (!sprite->is_visible_in_tree()) return;
|
||||||
transform = sprite->get_global_transform().affine_inverse() * transform;
|
transform = sprite->get_global_transform().affine_inverse() * transform;
|
||||||
Vector2 position = transform.get_origin();
|
Vector2 position = transform.get_origin();
|
||||||
position.y *= -1;
|
position.y *= -1;
|
||||||
|
|||||||
@ -95,6 +95,7 @@ void SpineSlotNode::update_transform(SpineSprite *sprite) {
|
|||||||
}
|
}
|
||||||
auto bone = slot->get_bone();
|
auto bone = slot->get_bone();
|
||||||
if (!bone.is_valid()) return;
|
if (!bone.is_valid()) return;
|
||||||
|
if (!is_visible_in_tree()) return;
|
||||||
this->set_global_transform(bone->get_global_transform());
|
this->set_global_transform(bone->get_global_transform());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -480,9 +480,7 @@ void SpineSprite::callback(spine::AnimationState *state, spine::EventType type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
Transform2D SpineSprite::get_global_bone_transform(const String &bone_name) {
|
Transform2D SpineSprite::get_global_bone_transform(const String &bone_name) {
|
||||||
if (!animation_state.is_valid() && !skeleton.is_valid()) {
|
if (!animation_state.is_valid() && !skeleton.is_valid()) return get_global_transform();
|
||||||
return get_global_transform();
|
|
||||||
}
|
|
||||||
auto bone = skeleton->find_bone(bone_name);
|
auto bone = skeleton->find_bone(bone_name);
|
||||||
if (!bone.is_valid()) {
|
if (!bone.is_valid()) {
|
||||||
print_error(vformat("Bone: '%s' not found.", bone_name));
|
print_error(vformat("Bone: '%s' not found.", bone_name));
|
||||||
@ -492,9 +490,7 @@ Transform2D SpineSprite::get_global_bone_transform(const String &bone_name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SpineSprite::set_global_bone_transform(const String &bone_name, Transform2D transform) {
|
void SpineSprite::set_global_bone_transform(const String &bone_name, Transform2D transform) {
|
||||||
if (!animation_state.is_valid() && !skeleton.is_valid()) {
|
if (!animation_state.is_valid() && !skeleton.is_valid()) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto bone = skeleton->find_bone(bone_name);
|
auto bone = skeleton->find_bone(bone_name);
|
||||||
if (!bone.is_valid()) {
|
if (!bone.is_valid()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user