Add lever and jump pad components with activation logic
This commit is contained in:
146
addons/rmsmartshape/scenes/GUI_Edge_InfoPanel.gd
Normal file
146
addons/rmsmartshape/scenes/GUI_Edge_InfoPanel.gd
Normal file
@@ -0,0 +1,146 @@
|
||||
@tool
|
||||
extends PanelContainer
|
||||
class_name SS2D_EdgeInfoPanel
|
||||
|
||||
signal material_override_toggled(enabled: bool)
|
||||
signal render_toggled(enabled: bool)
|
||||
signal weld_toggled(enabled: bool)
|
||||
signal z_index_changed(value: int)
|
||||
signal edge_material_changed(value: SS2D_Material_Edge)
|
||||
|
||||
var indicies := Vector2i(-1, -1) : set = set_indicies
|
||||
var edge_material: SS2D_Material_Edge = null
|
||||
var edge_material_selector := FileDialog.new()
|
||||
|
||||
@onready var idx_label: Label = %IDX
|
||||
@onready var material_override_button: Button = %MaterialOverride
|
||||
@onready var override_container: Container = %OverrideContainer
|
||||
@onready var render_checkbox: CheckBox = %Render
|
||||
@onready var weld_checkbox: CheckBox = %Weld
|
||||
@onready var z_index_spinbox: SpinBox = %ZIndex
|
||||
@onready var set_material_button: Button = %SetMaterial
|
||||
@onready var clear_material_button: Button = %ClearMaterial
|
||||
@onready var material_status: Label = %MaterialStatus
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
material_override_button.connect("toggled", self._on_toggle_material_override)
|
||||
render_checkbox.connect("toggled", self._on_toggle_render)
|
||||
weld_checkbox.connect("toggled", self._on_toggle_weld)
|
||||
z_index_spinbox.connect("value_changed", self._on_set_z_index)
|
||||
set_material_button.connect("pressed", self._on_set_edge_material_pressed)
|
||||
clear_material_button.connect("pressed", self._on_set_edge_material_clear_pressed)
|
||||
|
||||
override_container.hide()
|
||||
clear_material_button.hide()
|
||||
|
||||
edge_material_selector.file_mode = FileDialog.FILE_MODE_OPEN_FILE
|
||||
edge_material_selector.dialog_hide_on_ok = true
|
||||
edge_material_selector.show_hidden_files = true
|
||||
edge_material_selector.mode_overrides_title = false
|
||||
edge_material_selector.title = "Select Edge Material"
|
||||
edge_material_selector.filters = PackedStringArray(["*.tres"])
|
||||
edge_material_selector.connect("file_selected", self._on_set_edge_material_file_selected)
|
||||
add_child(edge_material_selector)
|
||||
|
||||
|
||||
func _on_set_edge_material_clear_pressed() -> void:
|
||||
set_edge_material(null)
|
||||
|
||||
|
||||
func _on_set_edge_material_pressed() -> void:
|
||||
# Update file list
|
||||
edge_material_selector.invalidate()
|
||||
edge_material_selector.popup_centered_ratio(0.8)
|
||||
|
||||
|
||||
func _on_set_edge_material_file_selected(f: String) -> void:
|
||||
var rsc := load(f)
|
||||
if not rsc is SS2D_Material_Edge:
|
||||
push_error("Selected resource is not an Edge Material! (SS2D_Material_Edge)")
|
||||
return
|
||||
set_edge_material(rsc)
|
||||
|
||||
|
||||
func set_indicies(t: Vector2i) -> void:
|
||||
indicies = t
|
||||
idx_label.text = "IDX: %s" % indicies
|
||||
|
||||
|
||||
func set_material_override(enabled: bool) -> void:
|
||||
material_override_button.button_pressed = enabled
|
||||
_on_toggle_material_override(enabled)
|
||||
|
||||
|
||||
func set_render(enabled: bool, emit: bool = true) -> void:
|
||||
render_checkbox.button_pressed = enabled
|
||||
if emit:
|
||||
_on_toggle_render(enabled)
|
||||
|
||||
|
||||
func set_weld(enabled: bool, emit: bool = true) -> void:
|
||||
weld_checkbox.button_pressed = enabled
|
||||
if emit:
|
||||
_on_toggle_weld(enabled)
|
||||
|
||||
|
||||
func set_edge_material(v: SS2D_Material_Edge, emit: bool = true) -> void:
|
||||
edge_material = v
|
||||
if v == null:
|
||||
material_status.text = "[No Material]"
|
||||
clear_material_button.visible = false
|
||||
else:
|
||||
# Call string function 'get_file()' to get the filepath
|
||||
material_status.text = "[%s]" % (v.resource_path).get_file()
|
||||
clear_material_button.visible = true
|
||||
if emit:
|
||||
emit_signal("edge_material_changed", v)
|
||||
|
||||
|
||||
func set_edge_z_index(v: int, emit: bool = true) -> void:
|
||||
z_index_spinbox.value = float(v)
|
||||
if emit:
|
||||
_on_set_z_index(float(v))
|
||||
|
||||
|
||||
func get_render() -> bool:
|
||||
return render_checkbox.button_pressed
|
||||
|
||||
|
||||
func get_weld() -> bool:
|
||||
return weld_checkbox.button_pressed
|
||||
|
||||
|
||||
func get_edge_z_index() -> int:
|
||||
return int(z_index_spinbox.value)
|
||||
|
||||
|
||||
func _on_toggle_material_override(pressed: bool) -> void:
|
||||
override_container.visible = pressed
|
||||
emit_signal("material_override_toggled", pressed)
|
||||
|
||||
|
||||
func _on_toggle_render(pressed: bool) -> void:
|
||||
emit_signal("render_toggled", pressed)
|
||||
|
||||
|
||||
func _on_toggle_weld(pressed: bool) -> void:
|
||||
emit_signal("weld_toggled", pressed)
|
||||
|
||||
|
||||
func _on_set_z_index(v: float) -> void:
|
||||
emit_signal("z_index_changed", int(v))
|
||||
|
||||
|
||||
func load_values_from_meta_material(meta_mat: SS2D_Material_Edge_Metadata) -> void:
|
||||
set_render(meta_mat.render)
|
||||
set_weld(meta_mat.weld)
|
||||
set_z_index(meta_mat.z_index)
|
||||
set_edge_material(meta_mat.edge_material)
|
||||
|
||||
|
||||
func save_values_to_meta_material(meta_mat: SS2D_Material_Edge_Metadata) -> void:
|
||||
meta_mat.render = get_render()
|
||||
meta_mat.weld = get_weld()
|
||||
meta_mat.z_index = get_z_index()
|
||||
meta_mat.edge_material = edge_material
|
||||
100
addons/rmsmartshape/scenes/GUI_Edge_InfoPanel.tscn
Normal file
100
addons/rmsmartshape/scenes/GUI_Edge_InfoPanel.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cy1l6tyadc4s3"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://dud4fe6fsicvm" path="res://addons/rmsmartshape/assets/gui_theme.res" id="1_pwu3l"]
|
||||
[ext_resource type="Script" path="res://addons/rmsmartshape/scenes/GUI_Edge_InfoPanel.gd" id="2"]
|
||||
|
||||
[node name="GUI_Edge_InfoPanel" type="PanelContainer"]
|
||||
anchors_preset = -1
|
||||
anchor_right = 0.203125
|
||||
anchor_bottom = 0.345679
|
||||
offset_bottom = -62.0
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
theme = ExtResource("1_pwu3l")
|
||||
script = ExtResource("2")
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Properties" type="VBoxContainer" parent="Container"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="IDX" type="Label" parent="Container/Properties"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "IDX: [1,2]"
|
||||
|
||||
[node name="Functions" type="VBoxContainer" parent="Container"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Make Inner Curve" type="Button" parent="Container/Functions"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Make Inner Curve"
|
||||
|
||||
[node name="Make Outer Curve" type="Button" parent="Container/Functions"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Make Outer Curve"
|
||||
|
||||
[node name="MaterialOverride" type="Button" parent="Container/Functions"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
toggle_mode = true
|
||||
text = "Material Override"
|
||||
|
||||
[node name="OverrideContainer" type="VBoxContainer" parent="Container"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="Container/OverrideContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Render" type="CheckBox" parent="Container/OverrideContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Render"
|
||||
|
||||
[node name="Weld" type="CheckBox" parent="Container/OverrideContainer"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Weld"
|
||||
|
||||
[node name="ZIndexSection" type="HBoxContainer" parent="Container/OverrideContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="lbl" type="Label" parent="Container/OverrideContainer/ZIndexSection"]
|
||||
layout_mode = 2
|
||||
text = "Z:"
|
||||
|
||||
[node name="ZIndex" type="SpinBox" parent="Container/OverrideContainer/ZIndexSection"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
min_value = -100.0
|
||||
|
||||
[node name="SetMaterial" type="Button" parent="Container/OverrideContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Set Material"
|
||||
|
||||
[node name="ClearMaterial" type="Button" parent="Container/OverrideContainer"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Clear Material"
|
||||
|
||||
[node name="MaterialStatus" type="Label" parent="Container/OverrideContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "[No Material]"
|
||||
25
addons/rmsmartshape/scenes/GUI_InfoPanel.gd
Normal file
25
addons/rmsmartshape/scenes/GUI_InfoPanel.gd
Normal file
@@ -0,0 +1,25 @@
|
||||
@tool
|
||||
extends PanelContainer
|
||||
class_name SS2D_PointInfoPanel
|
||||
|
||||
|
||||
@onready var idx_label: Label = %IDX
|
||||
@onready var tex_label: Label = %Tex
|
||||
@onready var width_label: Label = %Width
|
||||
@onready var flip_label: Label = %Flip
|
||||
|
||||
|
||||
func set_idx(i: int) -> void:
|
||||
idx_label.text = "IDX: %s" % i
|
||||
|
||||
|
||||
func set_texture_idx(i: int) -> void:
|
||||
tex_label.text = "Texture2D: %s" % i
|
||||
|
||||
|
||||
func set_width(f: float) -> void:
|
||||
width_label.text = "Width: %s" % f
|
||||
|
||||
|
||||
func set_flip(b: bool) -> void:
|
||||
flip_label.text = "Flip: %s" % b
|
||||
44
addons/rmsmartshape/scenes/GUI_InfoPanel.tscn
Normal file
44
addons/rmsmartshape/scenes/GUI_InfoPanel.tscn
Normal file
@@ -0,0 +1,44 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cxu6258urdtf1"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://dud4fe6fsicvm" path="res://addons/rmsmartshape/assets/gui_theme.res" id="1_byls6"]
|
||||
[ext_resource type="Script" path="res://addons/rmsmartshape/scenes/GUI_InfoPanel.gd" id="2"]
|
||||
|
||||
[node name="GUI_InfoPanel" type="PanelContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_right = -918.0
|
||||
offset_bottom = -486.0
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
theme = ExtResource("1_byls6")
|
||||
script = ExtResource("2")
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Properties" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="IDX" type="Label" parent="Properties"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "IDX: 13"
|
||||
|
||||
[node name="Tex" type="Label" parent="Properties"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Tex: 1"
|
||||
|
||||
[node name="Width" type="Label" parent="Properties"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Width: 1.0"
|
||||
|
||||
[node name="Flip" type="Label" parent="Properties"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Flip: N"
|
||||
16
addons/rmsmartshape/scenes/SnapPopup.gd
Normal file
16
addons/rmsmartshape/scenes/SnapPopup.gd
Normal file
@@ -0,0 +1,16 @@
|
||||
@tool
|
||||
extends Popup
|
||||
class_name SS2D_SnapPopup
|
||||
|
||||
@onready var snap_offset_x: SpinBox = %SnapOffsetX
|
||||
@onready var snap_offset_y: SpinBox = %SnapOffsetY
|
||||
@onready var snap_step_x: SpinBox = %SnapStepX
|
||||
@onready var snap_step_y: SpinBox = %SnapStepY
|
||||
|
||||
|
||||
func get_snap_offset() -> Vector2:
|
||||
return Vector2(snap_offset_x.value, snap_offset_y.value)
|
||||
|
||||
|
||||
func get_snap_step() -> Vector2:
|
||||
return Vector2(snap_step_x.value, snap_step_y.value)
|
||||
58
addons/rmsmartshape/scenes/SnapPopup.tscn
Normal file
58
addons/rmsmartshape/scenes/SnapPopup.tscn
Normal file
@@ -0,0 +1,58 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://d1acvw8yuubxo"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/rmsmartshape/scenes/SnapPopup.gd" id="1"]
|
||||
[ext_resource type="Theme" uid="uid://dud4fe6fsicvm" path="res://addons/rmsmartshape/assets/gui_theme.res" id="1_6ft7o"]
|
||||
|
||||
[node name="SnapPopup" type="PopupPanel"]
|
||||
size = Vector2i(301, 128)
|
||||
visible = true
|
||||
theme = ExtResource("1_6ft7o")
|
||||
script = ExtResource("1")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
offset_left = 12.0
|
||||
offset_top = 12.0
|
||||
offset_right = 289.0
|
||||
offset_bottom = 116.0
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Configure Snap"
|
||||
|
||||
[node name="SnapOffset" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/SnapOffset"]
|
||||
layout_mode = 2
|
||||
text = "Grid Offset:"
|
||||
|
||||
[node name="SnapOffsetX" type="SpinBox" parent="VBoxContainer/SnapOffset"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
suffix = "px"
|
||||
|
||||
[node name="SnapOffsetY" type="SpinBox" parent="VBoxContainer/SnapOffset"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
suffix = "px"
|
||||
|
||||
[node name="SnapStep" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/SnapStep"]
|
||||
layout_mode = 2
|
||||
text = "Grid Step: "
|
||||
|
||||
[node name="SnapStepX" type="SpinBox" parent="VBoxContainer/SnapStep"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
value = 8.0
|
||||
suffix = "px"
|
||||
|
||||
[node name="SnapStepY" type="SpinBox" parent="VBoxContainer/SnapStep"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
value = 8.0
|
||||
suffix = "px"
|
||||
Reference in New Issue
Block a user