Allow method binds to take Object subclasses as arguments
This commit adds a condition to VariantCaster that casts Variants of type OBJECT to any type T, if T is derived from Object. This change enables a fair bit of code cleanup. First, the Variant implicit cast operators for Node and Control can be removed, which allows for some invalid includes to be removed. Second, helper methods in Tree whose sole purpose was to cast arguments to TreeItem * are no longer necessary. A few small changes also had to be made to other files, due to the changes cascading down all the includes.
This commit is contained in:
parent
2f4d76f068
commit
051ef479c9
15 changed files with 64 additions and 78 deletions
|
|
@ -2695,7 +2695,7 @@ void EditorPropertyNodePath::_node_selected(const NodePath &p_path) {
|
|||
}
|
||||
|
||||
if (!base_node && get_edited_object()->has_method("get_root_path")) {
|
||||
base_node = get_edited_object()->call("get_root_path");
|
||||
base_node = Object::cast_to<Node>(get_edited_object()->call("get_root_path"));
|
||||
}
|
||||
|
||||
if (!base_node && Object::cast_to<RefCounted>(get_edited_object())) {
|
||||
|
|
|
|||
|
|
@ -3977,7 +3977,7 @@ void CanvasItemEditor::_selection_changed() {
|
|||
|
||||
void CanvasItemEditor::edit(CanvasItem *p_canvas_item) {
|
||||
Array selection = editor_selection->get_selected_nodes();
|
||||
if (selection.size() != 1 || (Node *)selection[0] != p_canvas_item) {
|
||||
if (selection.size() != 1 || Object::cast_to<Node>(selection[0]) != p_canvas_item) {
|
||||
drag_type = DRAG_NONE;
|
||||
|
||||
// Clear the selection
|
||||
|
|
|
|||
|
|
@ -6623,7 +6623,7 @@ void Node3DEditor::snap_selected_nodes_to_floor() {
|
|||
// For snapping to be performed, there must be solid geometry under at least one of the selected nodes.
|
||||
// We need to check this before snapping to register the undo/redo action only if needed.
|
||||
for (int i = 0; i < keys.size(); i++) {
|
||||
Node *node = keys[i];
|
||||
Node *node = Object::cast_to<Node>(keys[i]);
|
||||
Node3D *sp = Object::cast_to<Node3D>(node);
|
||||
Dictionary d = snap_data[node];
|
||||
Vector3 from = d["from"];
|
||||
|
|
@ -6645,7 +6645,7 @@ void Node3DEditor::snap_selected_nodes_to_floor() {
|
|||
|
||||
// Perform snapping if at least one node can be snapped
|
||||
for (int i = 0; i < keys.size(); i++) {
|
||||
Node *node = keys[i];
|
||||
Node *node = Object::cast_to<Node>(keys[i]);
|
||||
Node3D *sp = Object::cast_to<Node3D>(node);
|
||||
Dictionary d = snap_data[node];
|
||||
Vector3 from = d["from"];
|
||||
|
|
|
|||
|
|
@ -2802,7 +2802,7 @@ bool ScriptEditor::can_drop_data_fw(const Point2 &p_point, const Variant &p_data
|
|||
}
|
||||
|
||||
if (String(d["type"]) == "script_list_element") {
|
||||
Node *node = d["script_list_element"];
|
||||
Node *node = Object::cast_to<Node>(d["script_list_element"]);
|
||||
|
||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(node);
|
||||
if (se) {
|
||||
|
|
@ -2875,7 +2875,7 @@ void ScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Co
|
|||
}
|
||||
|
||||
if (String(d["type"]) == "script_list_element") {
|
||||
Node *node = d["script_list_element"];
|
||||
Node *node = Object::cast_to<Node>(d["script_list_element"]);
|
||||
|
||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(node);
|
||||
EditorHelp *eh = Object::cast_to<EditorHelp>(node);
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ void RenameDialog::_post_popup() {
|
|||
Array selected_node_list = editor_selection->get_selected_nodes();
|
||||
ERR_FAIL_COND(selected_node_list.size() == 0);
|
||||
|
||||
preview_node = selected_node_list[0];
|
||||
preview_node = Object::cast_to<Node>(selected_node_list[0]);
|
||||
|
||||
_update_preview();
|
||||
_update_substitute();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue