You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.0 KiB
GDScript

@tool
extends EditorPlugin
var _importer: EditorImportPlugin
var _dock: Control
func _enter_tree() -> void:
var src_path : String = get_script().get_path().get_base_dir().path_join("Src")
var importer_script : CSharpScript = load(src_path.path_join("InkStoryImporter.cs")) as CSharpScript
if not importer_script.can_instantiate():
return
_importer = importer_script.new() as EditorImportPlugin
add_import_plugin(_importer)
var dock_scene : PackedScene = load(src_path.path_join("InkDock.tscn")) as PackedScene
_dock = dock_scene.instantiate() as Control
add_control_to_bottom_panel(_dock, "Ink preview")
var fs : EditorFileSystem = get_editor_interface().get_resource_filesystem()
if not fs.resources_reimported.is_connected(_when_resources_reimported):
fs.resources_reimported.connect(_when_resources_reimported)
func _exit_tree() -> void:
var fs : EditorFileSystem = get_editor_interface().get_resource_filesystem()
if fs.resources_reimported.is_connected(_when_resources_reimported):
fs.resources_reimported.disconnect(_when_resources_reimported)
if _dock != null:
remove_control_from_bottom_panel(_dock)
_dock.free()
_dock = null
if _importer != null:
remove_import_plugin(_importer)
_importer = null
func _notification(what : int) -> void:
if what == NOTIFICATION_POST_ENTER_TREE:
if _importer != null:
return
get_editor_interface().set_plugin_enabled("GodotInk", false)
printerr(
"GodotInk could not be loaded.\n" +
"Make sure your .csproj file references GodotInk.props, and rebuild the solution.\n" +
"See the installation guide for more information: https://github.com/paulloz/godot-ink/wiki\n" +
"If you think this is not an issue on your end, please open a bug report: https://github.com/paulloz/godot-ink/issues/new/choose"
)
func _when_resources_reimported(resources : PackedStringArray) -> void:
if _dock == null:
return
for resource in resources:
if resource.get_extension() == "ink":
_dock.call("WhenInkResourceReimported")
return