2021-11-18 17:23:37 +01:00
tool
extends EditorPlugin
2021-12-15 20:58:46 +01:00
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 " )
2021-12-15 20:58:46 +01:00
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 " )