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
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
|