Fix crash when clicking on "Interpolation Mode" with nonexistent node path
issue reference [https://github.com/godotengine/godot/issues/81769]
- adding a nullptr check on a Node pointer obtained from get_node(NodePath) in case it is null now we wont execute the next instruction
> ClassDB::get_property_info(nd->get_class(), prop, &prop_info);
Which then prevents the crash
(cherry picked from commit e7a35d1521
)
This commit is contained in:
parent
5470eb5894
commit
8ed4af259a
|
@ -2694,14 +2694,21 @@ void AnimationTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
||||||
AnimationPlayer *ap = ape->get_player();
|
AnimationPlayer *ap = ape->get_player();
|
||||||
if (ap) {
|
if (ap) {
|
||||||
NodePath npath = animation->track_get_path(track);
|
NodePath npath = animation->track_get_path(track);
|
||||||
Node *nd = ap->get_node(ap->get_root())->get_node(NodePath(npath.get_concatenated_names()));
|
Node *a_ap_root_node = ap->get_node(ap->get_root());
|
||||||
StringName prop = npath.get_concatenated_subnames();
|
Node *nd = nullptr;
|
||||||
PropertyInfo prop_info;
|
// We must test that we have a valid a_ap_root_node before trying to access its content to init the nd Node.
|
||||||
ClassDB::get_property_info(nd->get_class(), prop, &prop_info);
|
if (a_ap_root_node) {
|
||||||
bool is_angle = prop_info.type == Variant::FLOAT && prop_info.hint_string.find("radians") != -1;
|
nd = a_ap_root_node->get_node(NodePath(npath.get_concatenated_names()));
|
||||||
if (is_angle) {
|
}
|
||||||
menu->add_icon_item(get_theme_icon(SNAME("InterpLinearAngle"), SNAME("EditorIcons")), TTR("Linear Angle"), MENU_INTERPOLATION_LINEAR_ANGLE);
|
if (nd) {
|
||||||
menu->add_icon_item(get_theme_icon(SNAME("InterpCubicAngle"), SNAME("EditorIcons")), TTR("Cubic Angle"), MENU_INTERPOLATION_CUBIC_ANGLE);
|
StringName prop = npath.get_concatenated_subnames();
|
||||||
|
PropertyInfo prop_info;
|
||||||
|
ClassDB::get_property_info(nd->get_class(), prop, &prop_info);
|
||||||
|
bool is_angle = prop_info.type == Variant::FLOAT && prop_info.hint_string.find("radians") != -1;
|
||||||
|
if (is_angle) {
|
||||||
|
menu->add_icon_item(get_theme_icon(SNAME("InterpLinearAngle"), SNAME("EditorIcons")), TTR("Linear Angle"), MENU_INTERPOLATION_LINEAR_ANGLE);
|
||||||
|
menu->add_icon_item(get_theme_icon(SNAME("InterpCubicAngle"), SNAME("EditorIcons")), TTR("Cubic Angle"), MENU_INTERPOLATION_CUBIC_ANGLE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue