init
This commit is contained in:
118
addons/curved_lines_2d/advanced_tab.gd
Normal file
118
addons/curved_lines_2d/advanced_tab.gd
Normal file
@@ -0,0 +1,118 @@
|
||||
@tool
|
||||
extends Control
|
||||
|
||||
var _init_hint_label_text := ""
|
||||
var _selected_animation_player : AnimationPlayer
|
||||
var fps_number_input : EditorSpinSlider
|
||||
|
||||
func _enter_tree() -> void:
|
||||
_init_hint_label_text = $%HintLabel.text
|
||||
fps_number_input = _make_number_input("FPS", 60.0, 5.0, 120.0, "fps", 1.0)
|
||||
%FpsInputContainer.add_child(fps_number_input)
|
||||
|
||||
|
||||
func _on_export_as_png_button_pressed() -> void:
|
||||
var selected_node := EditorInterface.get_selection().get_selected_nodes().pop_back()
|
||||
Line2DGeneratorInspectorPlugin._on_export_png_button_pressed(selected_node)
|
||||
|
||||
|
||||
func _on_export_as_baked_scene_button_pressed() -> void:
|
||||
var selected_node := EditorInterface.get_selection().get_selected_nodes().pop_back()
|
||||
Line2DGeneratorInspectorPlugin._show_exported_scene_dialog(
|
||||
selected_node, Line2DGeneratorInspectorPlugin._export_baked_scene
|
||||
)
|
||||
|
||||
|
||||
func _on_export_as_3d_scene_button_pressed() -> void:
|
||||
var selected_node := EditorInterface.get_selection().get_selected_nodes().pop_back()
|
||||
Line2DGeneratorInspectorPlugin._show_exported_scene_dialog(
|
||||
selected_node, Line2DGeneratorInspectorPlugin._export_3d_scene
|
||||
)
|
||||
|
||||
|
||||
func set_animation_player(animation_player : AnimationPlayer) -> void:
|
||||
if not animation_player is AnimationPlayer:
|
||||
%HintLabel.text = _init_hint_label_text
|
||||
%HintLabel.show()
|
||||
%SelectAnimationOptionButton.hide()
|
||||
%CreateSpriteSheetButton.hide()
|
||||
%FpsInputContainer.hide()
|
||||
%ExportAsSpritesheetCheckButton.hide()
|
||||
%StatusLabel.hide()
|
||||
return
|
||||
|
||||
_selected_animation_player = animation_player
|
||||
%HintLabel.hide()
|
||||
%StatusLabel.text = ""
|
||||
%SelectAnimationOptionButton.clear()
|
||||
%SelectAnimationOptionButton.add_item(" - select animation -")
|
||||
%SelectAnimationOptionButton.select(0)
|
||||
%SelectAnimationOptionButton.set_item_disabled(0, true)
|
||||
for anim_name in animation_player.get_animation_list():
|
||||
if anim_name == "RESET":
|
||||
continue
|
||||
%SelectAnimationOptionButton.add_item(anim_name)
|
||||
%SelectAnimationOptionButton.show()
|
||||
%CreateSpriteSheetButton.show()
|
||||
%FpsInputContainer.show()
|
||||
%ExportAsSpritesheetCheckButton.show()
|
||||
|
||||
|
||||
func _on_create_sprite_sheet_button_pressed() -> void:
|
||||
if not _selected_animation_player is AnimationPlayer:
|
||||
return
|
||||
var dialog := EditorFileDialog.new()
|
||||
var anim_name : String = %SelectAnimationOptionButton.get_item_text(%SelectAnimationOptionButton.get_selected_id())
|
||||
dialog.add_filter("*.png", "PNG")
|
||||
dialog.current_file = ("%s_%s" % [
|
||||
EditorInterface.get_edited_scene_root().name,
|
||||
anim_name
|
||||
]).to_snake_case()
|
||||
|
||||
dialog.file_mode = EditorFileDialog.FILE_MODE_SAVE_FILE
|
||||
dialog.file_selected.connect(func(path): _on_animation_file_name_chosen(path, anim_name, dialog))
|
||||
EditorInterface.get_base_control().add_child(dialog)
|
||||
dialog.popup_centered(Vector2i(800, 400))
|
||||
|
||||
|
||||
func _on_animation_file_name_chosen(file_path : String, anim_name : String, dialog : EditorFileDialog):
|
||||
dialog.queue_free()
|
||||
var fps := fps_number_input.value
|
||||
%StatusLabel.show()
|
||||
%CreateSpriteSheetButton.disabled = true
|
||||
%CreateSpriteSheetButton.text = "Creating..."
|
||||
|
||||
var sprite_frames := await SVSSceneExporter.export_sprite_frames(
|
||||
EditorInterface.get_edited_scene_root(), _selected_animation_player, anim_name, fps,
|
||||
EditorInterface.get_base_control(), func(status_msg : String): %StatusLabel.text = status_msg
|
||||
)
|
||||
|
||||
if %ExportAsSpritesheetCheckButton.button_pressed:
|
||||
var im : Image = Image.create_empty(
|
||||
sprite_frames[0].get_size().x * sprite_frames.size(),
|
||||
sprite_frames[0].get_size().y, false, sprite_frames[0].get_format())
|
||||
for idx in sprite_frames.size():
|
||||
im.blit_rect(sprite_frames[idx],
|
||||
Rect2i(Vector2i.ZERO, sprite_frames[idx].get_size()),
|
||||
Vector2i(sprite_frames[0].get_size().x * idx, 0)
|
||||
)
|
||||
im.save_png(file_path)
|
||||
else:
|
||||
for idx in sprite_frames.size():
|
||||
sprite_frames[idx].save_png(file_path.replacen(".png", "_%d.png" % idx))
|
||||
|
||||
%StatusLabel.text = "Exported %d frames" % sprite_frames.size()
|
||||
%CreateSpriteSheetButton.disabled = false
|
||||
%CreateSpriteSheetButton.text = "Create"
|
||||
EditorInterface.get_resource_filesystem().scan()
|
||||
|
||||
|
||||
func _make_number_input(lbl : String, value : float, min_value : float, max_value : float, suffix : String, step := 1.0) -> EditorSpinSlider:
|
||||
var x_slider := EditorSpinSlider.new()
|
||||
x_slider.value = value
|
||||
x_slider.min_value = min_value
|
||||
x_slider.max_value = max_value
|
||||
x_slider.suffix = suffix
|
||||
x_slider.label = lbl
|
||||
x_slider.step = step
|
||||
return x_slider
|
||||
Reference in New Issue
Block a user