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
signal sd_scene_changed ( new_scene )
const MainScreen = preload ( " res://addons/summer_day/main_screen.tscn " )
2021-12-12 17:04:17 +01:00
const Timeline = preload ( " res://addons/summer_day/user_interface/timeline/timeline.tscn " )
const ScenePicker = preload ( " res://addons/summer_day/user_interface/resource_picker/scene_picker.gd " )
2021-11-18 17:23:37 +01:00
2021-11-21 11:46:04 +01:00
var Canvas : SummerDayCanvas
2021-11-18 17:23:37 +01:00
var main_screen_instance : SummerDayMainScreen
var timeline_instance : SummerDayTimeline
2021-12-12 17:04:17 +01:00
var scene_picker_instance : SummerDayScenePicker
2021-11-18 17:23:37 +01:00
2021-11-21 11:46:04 +01:00
var tool_context : = SummerDayToolContext . new ( )
2021-11-18 17:23:37 +01:00
func _enter_tree ( ) :
main_screen_instance = MainScreen . instance ( )
2021-11-21 11:46:04 +01:00
Canvas = main_screen_instance . get_node ( " Canvas " )
Canvas . tool_context = tool_context
2021-12-15 20:58:46 +01:00
self . connect ( " document_changed " ,
Canvas , " _on_SummerDay_document_changed " )
2021-11-21 11:46:04 +01:00
self . connect ( " sd_scene_changed " ,
Canvas , " _on_SummerDay_scene_changed "
)
2021-12-19 22:26:09 +01:00
self . connect ( " document_changed " ,
tool_context , " _on_SummerDay_document_changed "
)
2021-11-18 17:23:37 +01:00
self . connect ( " sd_scene_changed " ,
2021-11-21 11:46:04 +01:00
tool_context , " _on_SummerDay_scene_changed "
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
scene_picker_instance = ScenePicker . new ( )
add_inspector_plugin ( scene_picker_instance )
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 )
2021-12-12 17:04:17 +01:00
remove_inspector_plugin ( scene_picker_instance )
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 ) :
2021-12-12 17:04:17 +01:00
if object is SummerDayDocument :
2021-11-18 17:23:37 +01:00
return true
2021-12-12 17:04:17 +01:00
func edit ( object ) :
2021-12-15 20:58:46 +01:00
emit_signal ( " document_changed " , object )
2021-12-12 17:04:17 +01:00
emit_signal ( " sd_scene_changed " , object . scene )
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 " )