diff options
Diffstat (limited to 'addons/voxel-core/voxel-core.gd')
-rw-r--r-- | addons/voxel-core/voxel-core.gd | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/addons/voxel-core/voxel-core.gd b/addons/voxel-core/voxel-core.gd deleted file mode 100644 index 204771a..0000000 --- a/addons/voxel-core/voxel-core.gd +++ /dev/null @@ -1,168 +0,0 @@ -tool -extends EditorPlugin - - - -## Enums -enum VoxelCore { - OTHER = -1, - VOXEL_SET, - VOXEL_OBJECT, - VOXEL_MESH, -} - - - -## Constants -const VoxelObject := preload("res://addons/voxel-core/classes/voxel_object.gd") - -const VoxelSetEditor := preload("res://addons/voxel-core/engine/voxel_set_editor/voxel_set_editor.tscn") - -const VoxelObjectEditor := preload("res://addons/voxel-core/engine/voxel_object_editor/voxel_object_editor.tscn") - - - -## Private Variables -var _current_main_scene : String - -var _handling_voxel_set : VoxelSet - -var _handling_voxel_object : VoxelObject - -var voxel_set_editor - -var voxel_object_editor - -var Meshes := preload("res://addons/voxel-core/engine/importers/meshes.gd").new() - -var VoxelObjects := preload("res://addons/voxel-core/engine/importers/voxel_objects.gd").new() - -var VoxelSets := preload("res://addons/voxel-core/engine/importers/voxel_sets.gd").new() - - - -## Built-In Virtual Methods -func _enter_tree(): - add_import_plugin(Meshes) - add_import_plugin(VoxelObjects) - add_import_plugin(VoxelSets) - - connect("scene_closed", self, "_on_scene_closed") - connect("main_screen_changed", self, "_on_main_screen_changed") - - print("Voxel-Core is active...") - - -func _exit_tree(): - remove_import_plugin(Meshes) - remove_import_plugin(VoxelObjects) - remove_import_plugin(VoxelSets) - - close_voxel_set_editor() - close_voxel_object_editor() - - print("Voxel-Core is inactive!") - - -func handles(object : Object) -> bool: - - if _current_main_scene != "3D": - close_voxel_object_editor() - if is_instance_valid(_handling_voxel_object): - var selections := get_editor_interface().get_selection().get_selected_nodes() - if selections.size() != 1 or not selections.has(_handling_voxel_object): - _handling_voxel_object = null - close_voxel_object_editor() - - return true if typeof_voxel_core(object) > VoxelCore.OTHER else false - - -func edit(object): - match typeof_voxel_core(object): - VoxelCore.VOXEL_SET: - _handling_voxel_set = object - if not is_instance_valid(voxel_object_editor) or not voxel_object_editor.is_editing(): - show_voxel_set_editor(object) - return true - VoxelCore.VOXEL_OBJECT: - _handling_voxel_object = object - if _current_main_scene == "3D": - show_voxel_object_editor(object) - return true - - -func forward_spatial_gui_input(camera : Camera, event : InputEvent) -> bool: - return voxel_object_editor.handle_input(camera, event) if is_instance_valid(voxel_object_editor) else false - - - -## Public Methods -static func typeof_voxel_core(object : Object) -> int: - var type_of = VoxelCore.OTHER - - if object is VoxelSet: - type_of = VoxelCore.VOXEL_SET - elif object is VoxelObject: - type_of = VoxelCore.VOXEL_OBJECT - elif object is VoxelMesh: - type_of = VoxelCore.VOXEL_MESH - - return type_of - - -func show_voxel_set_editor(voxel_set : VoxelSet) -> void: - if not is_instance_valid(voxel_set_editor): - voxel_set_editor = VoxelSetEditor.instance() - voxel_set_editor.undo_redo = get_undo_redo() - voxel_set_editor.connect("close", self, "close_voxel_set_editor") - add_control_to_bottom_panel(voxel_set_editor, "VoxelSet") - voxel_set_editor.voxel_set = voxel_set - make_bottom_panel_item_visible(voxel_set_editor) - - -func close_voxel_set_editor() -> void: - if is_instance_valid(voxel_set_editor): - remove_control_from_bottom_panel(voxel_set_editor) - voxel_set_editor.queue_free() - voxel_set_editor = null - - -func show_voxel_object_editor(voxel_object : VoxelObject) -> void: - if not is_instance_valid(voxel_object_editor): - voxel_object_editor = VoxelObjectEditor.instance() - voxel_object_editor.undo_redo = get_undo_redo() - voxel_object_editor.connect("editing", self, "_on_voxel_object_editor_editing_toggled") - voxel_object_editor.connect("close", self, "close_voxel_object_editor") - add_control_to_bottom_panel(voxel_object_editor, "VoxelObject") - voxel_object_editor.start_editing(voxel_object) - make_bottom_panel_item_visible(voxel_object_editor) - - -func close_voxel_object_editor() -> void: - if is_instance_valid(voxel_object_editor): - voxel_object_editor.stop_editing() - remove_control_from_bottom_panel(voxel_object_editor) - voxel_object_editor.queue_free() - voxel_object_editor = null - - - -## Private Methods -func _on_main_screen_changed(screen_name : String) -> void: - _current_main_scene = screen_name - if screen_name == "3D" and is_instance_valid(_handling_voxel_object): - show_voxel_object_editor(_handling_voxel_object) - else: - close_voxel_object_editor() - - -func _on_scene_closed(filepath : String) -> void: - close_voxel_object_editor() - - -func _on_voxel_object_editor_editing_toggled(toggled : bool) -> void: - if is_instance_valid(voxel_object_editor) and voxel_object_editor.voxel_object == _handling_voxel_object: - if toggled: - get_editor_interface().get_selection().clear() - else: - get_editor_interface().get_selection().add_node(_handling_voxel_object) |