4
0
Fork 0
WolfBox/addons/godot_resource_groups/godot_resource_groups.gd

63 lines
2.1 KiB
GDScript

@tool
extends EditorPlugin
const ResourceScanner = preload("resource_scanner.gd")
const ResourceGroupScanner = preload("resource_group_scanner.gd")
const ResourceGroupsExportPlugin = preload("godot_resource_groups_export_plugin.gd")
const REBUILD_SETTING: StringName = "godot_resource_groups/auto_rebuild"
var _group_scanner: ResourceGroupScanner
var _export_plugin: ResourceGroupsExportPlugin
func _enter_tree():
add_tool_menu_item("Rebuild project resource groups", _rebuild_resource_groups)
_group_scanner = ResourceGroupScanner.new(get_editor_interface().get_resource_filesystem())
# try to get the setting, if it doesn't exist, set it to true
var auto_rebuild: bool = ProjectSettings.get_setting(REBUILD_SETTING, true)
# make sure it is there
ProjectSettings.set_setting("godot_resource_groups/auto_rebuild", auto_rebuild)
# add property info so it shows up in the editor
ProjectSettings.add_property_info({
"name": "godot_resource_groups/auto_rebuild",
"description": "Automatically rebuild resource groups when the project is built.",
"type": TYPE_BOOL,
})
# register the export plugin
_export_plugin = ResourceGroupsExportPlugin.new(_rebuild_resource_groups)
add_export_plugin(_export_plugin)
func _exit_tree():
remove_tool_menu_item("Rebuild project resource groups")
remove_export_plugin(_export_plugin)
func _build() -> bool:
# always read the setting to make sure it is up to date
var auto_rebuild: bool = ProjectSettings.get_setting(REBUILD_SETTING, true)
if auto_rebuild:
_rebuild_resource_groups()
return true
func _rebuild_resource_groups():
var start = Time.get_unix_time_from_system()
var groups = _group_scanner.scan()
for group in groups:
var resource_scanner = ResourceScanner.new(group, get_editor_interface().get_resource_filesystem())
var resource_paths = resource_scanner.scan()
group.paths = resource_paths
ResourceSaver.save(group)
get_editor_interface().get_resource_filesystem().update_file(group.resource_path)
var end = Time.get_unix_time_from_system()
print("Rebuilt resource groups in %.2f seconds." % [end-start])