SummerDay/addons/summer_day/summer_day.gd

107 lines
2.6 KiB
GDScript3
Raw Normal View History

2021-11-18 17:23:37 +01:00
tool
extends EditorPlugin
signal document_changed(new_doc)
2021-11-18 17:23:37 +01:00
2022-01-02 16:42:55 +01:00
var MainScreen
var Timeline
var Document
2021-11-21 11:46:04 +01:00
2022-01-02 16:42:55 +01:00
var canvas_instance
var main_screen_instance
var timeline_instance
2021-11-21 11:46:04 +01:00
2021-11-18 17:23:37 +01:00
func _enter_tree():
2022-01-02 16:42:55 +01:00
_initilize()
2021-11-18 17:23:37 +01:00
main_screen_instance = MainScreen.instance()
2022-01-02 16:42:55 +01:00
canvas_instance = main_screen_instance.get_node("Canvas")
self.connect("document_changed",
2022-01-02 16:42:55 +01:00
canvas_instance, "_on_SummerDay_document_changed")
2022-01-03 23:53:28 +01:00
canvas_instance.connect("resized",
canvas_instance, "_on_Canvas_resized")
2021-11-18 17:23:37 +01:00
# Add the main panel to the editor's main viewport.
get_editor_interface().get_editor_viewport().add_child(main_screen_instance)
# Hide the main panel. Very much required.
make_visible(false)
2021-12-12 17:04:17 +01:00
2021-11-18 17:23:37 +01:00
timeline_instance = Timeline.instance()
add_control_to_bottom_panel(timeline_instance, "SummerDay Timeline")
2021-12-12 17:04:17 +01:00
add_custom_type("SummerDayDocument", "Resource",
load("res://addons/summer_day/data/document/document.gd"),
2021-11-18 17:23:37 +01:00
get_editor_interface().get_base_control().get_icon("Animation", "EditorIcons"))
add_custom_type("SummerDayDisplay", "Control",
2021-12-12 17:04:17 +01:00
load("res://addons/summer_day/display/display.gd"),
2021-11-18 17:23:37 +01:00
get_editor_interface().get_base_control().get_icon("TextureRect", "EditorIcons"))
func _exit_tree():
if main_screen_instance:
main_screen_instance.queue_free()
2021-12-12 17:04:17 +01:00
remove_custom_type("SummerDayDocument")
2021-11-18 17:23:37 +01:00
remove_custom_type("SummerDayDisplay")
remove_control_from_bottom_panel(timeline_instance)
2022-01-11 14:13:56 +01:00
# $"/root/SummerDay".canvas_state.free()
# $"/root/SummerDay".z_range_manager.free()
2022-01-02 16:42:55 +01:00
2022-01-03 23:53:28 +01:00
func enable_plugin():
add_autoload_singleton(
"SummerDay",
"res://addons/summer_day/utilities/summer_day_globals.gd"
)
2022-01-02 16:42:55 +01:00
func disable_plugin():
remove_autoload_singleton("SummerDay")
2021-11-18 17:23:37 +01:00
func has_main_screen():
return true
func make_visible(visible):
if main_screen_instance:
main_screen_instance.visible = visible
# if visible:
# make_bottom_panel_item_visible(timeline_instance)
# else:
# hide_bottom_panel()
func handles(object):
2022-01-02 16:42:55 +01:00
if object is Document:
2021-11-18 17:23:37 +01:00
return true
2021-12-12 17:04:17 +01:00
func edit(object):
2022-01-03 23:53:28 +01:00
var _SummerDay = $"/root/SummerDay"
if object != _SummerDay.document:
_SummerDay.document = object
2022-01-02 16:42:55 +01:00
emit_signal("document_changed", object)
2021-11-18 17:23:37 +01:00
func get_plugin_name():
return "SummerDay"
func get_plugin_icon():
return get_editor_interface().get_base_control().get_icon("AnimationPlayer", "EditorIcons")
2022-01-02 16:42:55 +01:00
func _initilize():
add_autoload_singleton(
"SummerDay",
"res://addons/summer_day/utilities/summer_day_globals.gd"
)
2022-01-03 23:53:28 +01:00
2022-01-02 16:42:55 +01:00
MainScreen = load("res://addons/summer_day/main_screen.tscn")
Timeline = load("res://addons/summer_day/user_interface/timeline/timeline.tscn")
Document = load("res://addons/summer_day/data/document/document.gd")