mirror of
https://github.com/godotengine/godot.git
synced 2025-01-12 20:22:49 +08:00
Merge pull request #77880 from AThousandShips/get_node_fix
Use `get_node_or_null` when null checks are present
This commit is contained in:
commit
9fdce6635b
@ -172,9 +172,11 @@ void Area3D::_initialize_wind() {
|
||||
|
||||
// Overwrite with area-specified info if available
|
||||
if (!wind_source_path.is_empty()) {
|
||||
Node3D *p_wind_source = Object::cast_to<Node3D>(get_node(wind_source_path));
|
||||
ERR_FAIL_NULL(p_wind_source);
|
||||
Transform3D global_transform = p_wind_source->get_transform();
|
||||
Node *wind_source_node = get_node_or_null(wind_source_path);
|
||||
ERR_FAIL_NULL_MSG(wind_source_node, "Path to wind source is invalid: '" + wind_source_path + "'.");
|
||||
Node3D *wind_source_node3d = Object::cast_to<Node3D>(wind_source_node);
|
||||
ERR_FAIL_NULL_MSG(wind_source_node3d, "Path to wind source does not point to a Node3D: '" + wind_source_path + "'.");
|
||||
Transform3D global_transform = wind_source_node3d->get_transform();
|
||||
wind_direction = -global_transform.basis.get_column(Vector3::AXIS_Z).normalized();
|
||||
wind_source = global_transform.origin;
|
||||
temp_magnitude = wind_force_magnitude;
|
||||
|
@ -271,7 +271,7 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
|
||||
return;
|
||||
}
|
||||
|
||||
Node *parent = p_root_override ? p_root_override : get_node(root);
|
||||
Node *parent = p_root_override ? p_root_override : get_node_or_null(root);
|
||||
|
||||
ERR_FAIL_NULL(parent);
|
||||
|
||||
|
@ -2063,14 +2063,10 @@ Control *Control::find_next_valid_focus() const {
|
||||
// If the focus property is manually overwritten, attempt to use it.
|
||||
|
||||
if (!data.focus_next.is_empty()) {
|
||||
Node *n = get_node(data.focus_next);
|
||||
Control *c;
|
||||
if (n) {
|
||||
c = Object::cast_to<Control>(n);
|
||||
ERR_FAIL_COND_V_MSG(!c, nullptr, "Next focus node is not a control: " + n->get_name() + ".");
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
Node *n = get_node_or_null(data.focus_next);
|
||||
ERR_FAIL_NULL_V_MSG(n, nullptr, "Next focus node path is invalid: '" + data.focus_next + "'.");
|
||||
Control *c = Object::cast_to<Control>(n);
|
||||
ERR_FAIL_NULL_V_MSG(c, nullptr, "Next focus node is not a control: '" + n->get_name() + "'.");
|
||||
if (c->is_visible() && c->get_focus_mode() != FOCUS_NONE) {
|
||||
return c;
|
||||
}
|
||||
@ -2154,14 +2150,10 @@ Control *Control::find_prev_valid_focus() const {
|
||||
// If the focus property is manually overwritten, attempt to use it.
|
||||
|
||||
if (!data.focus_prev.is_empty()) {
|
||||
Node *n = get_node(data.focus_prev);
|
||||
Control *c;
|
||||
if (n) {
|
||||
c = Object::cast_to<Control>(n);
|
||||
ERR_FAIL_COND_V_MSG(!c, nullptr, "Previous focus node is not a control: " + n->get_name() + ".");
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
Node *n = get_node_or_null(data.focus_prev);
|
||||
ERR_FAIL_NULL_V_MSG(n, nullptr, "Previous focus node path is invalid: '" + data.focus_prev + "'.");
|
||||
Control *c = Object::cast_to<Control>(n);
|
||||
ERR_FAIL_NULL_V_MSG(c, nullptr, "Previous focus node is not a control: '" + n->get_name() + "'.");
|
||||
if (c->is_visible() && c->get_focus_mode() != FOCUS_NONE) {
|
||||
return c;
|
||||
}
|
||||
@ -2250,14 +2242,10 @@ Control *Control::_get_focus_neighbor(Side p_side, int p_count) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!data.focus_neighbor[p_side].is_empty()) {
|
||||
Control *c = nullptr;
|
||||
Node *n = get_node(data.focus_neighbor[p_side]);
|
||||
if (n) {
|
||||
c = Object::cast_to<Control>(n);
|
||||
ERR_FAIL_COND_V_MSG(!c, nullptr, "Neighbor focus node is not a control: " + n->get_name() + ".");
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
Node *n = get_node_or_null(data.focus_neighbor[p_side]);
|
||||
ERR_FAIL_NULL_V_MSG(n, nullptr, "Neighbor focus node path is invalid: '" + data.focus_neighbor[p_side] + "'.");
|
||||
Control *c = Object::cast_to<Control>(n);
|
||||
ERR_FAIL_NULL_V_MSG(c, nullptr, "Neighbor focus node is not a control: '" + n->get_name() + "'.");
|
||||
bool valid = true;
|
||||
if (!c->is_visible()) {
|
||||
valid = false;
|
||||
|
@ -989,7 +989,7 @@ void GraphEdit::_top_layer_draw() {
|
||||
_update_scroll();
|
||||
|
||||
if (connecting) {
|
||||
Node *fromn = get_node(NodePath(connecting_from));
|
||||
Node *fromn = get_node_or_null(NodePath(connecting_from));
|
||||
ERR_FAIL_NULL(fromn);
|
||||
GraphNode *from = Object::cast_to<GraphNode>(fromn);
|
||||
ERR_FAIL_NULL(from);
|
||||
|
@ -209,10 +209,10 @@ void MenuBar::_update_submenu(const String &p_menu_name, PopupMenu *p_child) {
|
||||
if (p_child->is_item_separator(i)) {
|
||||
DisplayServer::get_singleton()->global_menu_add_separator(p_menu_name);
|
||||
} else if (!p_child->get_item_submenu(i).is_empty()) {
|
||||
Node *n = p_child->get_node(p_child->get_item_submenu(i));
|
||||
ERR_FAIL_COND_MSG(!n, "Item subnode does not exist: " + p_child->get_item_submenu(i) + ".");
|
||||
Node *n = p_child->get_node_or_null(p_child->get_item_submenu(i));
|
||||
ERR_FAIL_NULL_MSG(n, "Item subnode does not exist: '" + p_child->get_item_submenu(i) + "'.");
|
||||
PopupMenu *pm = Object::cast_to<PopupMenu>(n);
|
||||
ERR_FAIL_COND_MSG(!pm, "Item subnode is not a PopupMenu: " + p_child->get_item_submenu(i) + ".");
|
||||
ERR_FAIL_NULL_MSG(pm, "Item subnode is not a PopupMenu: '" + p_child->get_item_submenu(i) + "'.");
|
||||
|
||||
DisplayServer::get_singleton()->global_menu_add_submenu_item(p_menu_name, atr(p_child->get_item_text(i)), p_menu_name + "/" + itos(i));
|
||||
_update_submenu(p_menu_name + "/" + itos(i), pm);
|
||||
|
@ -185,10 +185,10 @@ int PopupMenu::_get_mouse_over(const Point2 &p_over) const {
|
||||
}
|
||||
|
||||
void PopupMenu::_activate_submenu(int p_over, bool p_by_keyboard) {
|
||||
Node *n = get_node(items[p_over].submenu);
|
||||
ERR_FAIL_COND_MSG(!n, "Item subnode does not exist: " + items[p_over].submenu + ".");
|
||||
Node *n = get_node_or_null(items[p_over].submenu);
|
||||
ERR_FAIL_NULL_MSG(n, "Item subnode does not exist: '" + items[p_over].submenu + "'.");
|
||||
Popup *submenu_popup = Object::cast_to<Popup>(n);
|
||||
ERR_FAIL_COND_MSG(!submenu_popup, "Item subnode is not a Popup: " + items[p_over].submenu + ".");
|
||||
ERR_FAIL_NULL_MSG(submenu_popup, "Item subnode is not a Popup: '" + items[p_over].submenu + "'.");
|
||||
if (submenu_popup->is_visible()) {
|
||||
return; // Already visible.
|
||||
}
|
||||
|
@ -170,12 +170,10 @@ Ref<Image> ViewportTexture::get_image() const {
|
||||
}
|
||||
|
||||
void ViewportTexture::_setup_local_to_scene(const Node *p_loc_scene) {
|
||||
Node *vpn = p_loc_scene->get_node(path);
|
||||
ERR_FAIL_COND_MSG(!vpn, "ViewportTexture: Path to node is invalid.");
|
||||
|
||||
Node *vpn = p_loc_scene->get_node_or_null(path);
|
||||
ERR_FAIL_NULL_MSG(vpn, "Path to node is invalid: '" + path + "'.");
|
||||
vp = Object::cast_to<Viewport>(vpn);
|
||||
|
||||
ERR_FAIL_COND_MSG(!vp, "ViewportTexture: Path to node does not point to a viewport.");
|
||||
ERR_FAIL_NULL_MSG(vp, "Path to node does not point to a viewport: '" + path + "'.");
|
||||
|
||||
vp->viewport_textures.insert(this);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user