Last active
September 20, 2021 03:53
-
-
Save me2beats/9dcb5663f9c4338c755452cbed7c6a12 to your computer and use it in GitHub Desktop.
SceneTreeEditorUtils
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static func get_scene_tree_node(plugin:EditorPlugin)->Tree: | |
var scene_tree_dock:Container= plugin.get_editor_interface().get_base_control().find_node("Scene", 1,0) | |
return NodeU.get_node_by_class_path(scene_tree_dock, ['SceneTreeEditor', 'Tree']) as Tree | |
# almost same, just find_child_by_class() used instead of get_node_by_class_path | |
static func get_scene_tree_control(plugin:EditorPlugin)->Tree: | |
var empty:Tree | |
var base: = plugin.get_editor_interface().get_base_control() | |
var scene_dock = base.find_node("Scene", true, false) | |
var tree_editor:Control = find_child_by_class(scene_dock, 'SceneTreeEditor') | |
var tree:Tree = find_child_by_class(tree_editor, "Tree") | |
return tree | |
static func is_item_node_a_scene(scene_tree_control:Tree, item:TreeItem)->bool: | |
var open_scene_icon = scene_tree_control.get_icon("InstanceOptions", "EditorIcons") | |
for i in item.get_button_count(0): | |
var button = item.get_button(0, i) | |
if button == open_scene_icon: | |
return true | |
return false | |
static func get_scene_tree_items_by_type(type, scene_tree:Tree, plugin:EditorPlugin, items: = []): | |
var root_item: = scene_tree.get_root() | |
if not root_item: return | |
var root_node = plugin.get_editor_interface().get_edited_scene_root() | |
var result: = [] | |
if !items: | |
items = get_item_children_rec(root_item) | |
for item in items: | |
item = item as TreeItem | |
var nodepath:NodePath = item.get_metadata(0) | |
var node:Node = root_node.get_node(nodepath) | |
if node is type: | |
result.push_back(item) | |
return result | |
#todo: shorter name | |
static func get_items_to_remove_when_filtering_scene_tree_by_type(type, tree:Tree, plugin:EditorPlugin): | |
var items:Array = get_item_children_rec(tree.get_root()) | |
var items_by_type:Array = get_scene_tree_items_by_type(type, tree, plugin, items) | |
var parents:Dictionary = get_items_all_parents(items_by_type) | |
var filtered_items: = parents | |
for i in items_by_type: | |
filtered_items[i] = true | |
return arr_minus_dict(items, filtered_items) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment