mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 14:24:53 +08:00
[godot] Adds physics support to translating SpineBoneNodes
This commit makes it so that adding a SpineBoneNode as a child node to a SpineSprite node, selecting "Drive", and then adjusting the X/Y of the SpineBoneNode in Move mode will affect the Physics Constraints like a rotation already does.
This commit is contained in:
parent
639a76b3fa
commit
5e6dace791
@ -70,6 +70,7 @@ void SpineBoneNode::_notification(int what) {
|
|||||||
#else
|
#else
|
||||||
sprite->connect(SNAME("world_transforms_changed"), this, SNAME("_on_world_transforms_changed"));
|
sprite->connect(SNAME("world_transforms_changed"), this, SNAME("_on_world_transforms_changed"));
|
||||||
#endif
|
#endif
|
||||||
|
set_notify_local_transform(bone_mode == SpineConstant::BoneMode_Drive);
|
||||||
update_transform(sprite);
|
update_transform(sprite);
|
||||||
#if VERSION_MAJOR == 3
|
#if VERSION_MAJOR == 3
|
||||||
_change_notify("transform/translation");
|
_change_notify("transform/translation");
|
||||||
@ -97,6 +98,18 @@ void SpineBoneNode::_notification(int what) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {
|
||||||
|
if (bone_mode == SpineConstant::BoneMode_Drive && enabled) {
|
||||||
|
SpineSprite *sprite = find_parent_sprite();
|
||||||
|
if (sprite) {
|
||||||
|
Ref<SpineBone> bone = find_bone();
|
||||||
|
if (bone.is_valid()) {
|
||||||
|
bone->set_global_transform(get_global_transform());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case NOTIFICATION_DRAW: {
|
case NOTIFICATION_DRAW: {
|
||||||
draw();
|
draw();
|
||||||
break;
|
break;
|
||||||
@ -247,6 +260,7 @@ SpineConstant::BoneMode SpineBoneNode::get_bone_mode() {
|
|||||||
void SpineBoneNode::set_bone_mode(SpineConstant::BoneMode _bone_mode) {
|
void SpineBoneNode::set_bone_mode(SpineConstant::BoneMode _bone_mode) {
|
||||||
if (bone_mode != _bone_mode) {
|
if (bone_mode != _bone_mode) {
|
||||||
bone_mode = _bone_mode;
|
bone_mode = _bone_mode;
|
||||||
|
set_notify_local_transform(bone_mode == SpineConstant::BoneMode_Drive);
|
||||||
SpineSprite *sprite = find_parent_sprite();
|
SpineSprite *sprite = find_parent_sprite();
|
||||||
init_transform(sprite);
|
init_transform(sprite);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user