mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 06:29:02 +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() {
|
||||
SPINE_CHECK(bone, Transform2D())
|
||||
if (!sprite) return get_transform();
|
||||
if (!sprite->is_visible_in_tree()) return get_transform();
|
||||
Transform2D local;
|
||||
local.rotate(Math::deg2rad(-get_world_rotation_x()));
|
||||
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) {
|
||||
SPINE_CHECK(bone,)
|
||||
if (!sprite) set_transform(transform);
|
||||
if (!sprite->is_visible_in_tree()) return;
|
||||
transform = sprite->get_global_transform().affine_inverse() * transform;
|
||||
Vector2 position = transform.get_origin();
|
||||
position.y *= -1;
|
||||
|
||||
@ -95,6 +95,7 @@ void SpineSlotNode::update_transform(SpineSprite *sprite) {
|
||||
}
|
||||
auto bone = slot->get_bone();
|
||||
if (!bone.is_valid()) return;
|
||||
if (!is_visible_in_tree()) return;
|
||||
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) {
|
||||
if (!animation_state.is_valid() && !skeleton.is_valid()) {
|
||||
return get_global_transform();
|
||||
}
|
||||
if (!animation_state.is_valid() && !skeleton.is_valid()) return get_global_transform();
|
||||
auto bone = skeleton->find_bone(bone_name);
|
||||
if (!bone.is_valid()) {
|
||||
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) {
|
||||
if (!animation_state.is_valid() && !skeleton.is_valid()) {
|
||||
return;
|
||||
}
|
||||
if (!animation_state.is_valid() && !skeleton.is_valid()) return;
|
||||
auto bone = skeleton->find_bone(bone_name);
|
||||
if (!bone.is_valid()) {
|
||||
return;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user