Доработка. Угол наклона чёрточек на плоской кнопке

This commit is contained in:
sasha80
2024-04-23 11:20:55 +03:00
parent c8bce3bef8
commit b3e7baf572
5 changed files with 135 additions and 37 deletions

View File

@@ -57,7 +57,7 @@ void fragment()
[sub_resource type="ShaderMaterial" id="ShaderMaterial_hhdyc"]
resource_local_to_scene = true
shader = SubResource("Shader_2bftm")
shader_parameter/rotation = 45.0
shader_parameter/rotation = 0.0
shader_parameter/color = Vector4(1, 1, 1, 0.1)
shader_parameter/width = 3.0
shader_parameter/speed = 0.0
@@ -71,15 +71,22 @@ script/source = "@tool
extends Sprite2D
## Скорость движения чёрточек.
@export var speed: float = 0.01:
set(val): material.set('shader_parameter/speed', val)
get: return material.get('shader_parameter/speed')
## Режим отображения. Когда [b]true[/b], чёрточки отображаются.
@export var disabled: bool = false:
set(val): material.set('shader_parameter/disabled', val)
get: return material.get('shader_parameter/disabled')
## Угол наклона чёрточек.
@export var strips_rotation: float = 0.0:
set(val): material.set('shader_parameter/rotation', val)
get: return material.get('shader_parameter/rotation')
"
[sub_resource type="StyleBoxEmpty" id="6"]
@@ -97,7 +104,6 @@ offset_right = 20.0
offset_bottom = 20.0
theme_override_styles/panel = SubResource("1")
script = ExtResource("1_ui6sg")
toggle_mode = true
[node name="back" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_hhdyc")
@@ -126,9 +132,7 @@ theme_override_styles/hover = SubResource("2")
theme_override_styles/pressed = SubResource("3")
theme_override_styles/disabled = SubResource("5")
theme_override_styles/focus = SubResource("4")
toggle_mode = true
clip_text = true
[connection signal="resized" from="." to="." method="_on_resized"]
[connection signal="visibility_changed" from="back" to="back" method="_on_visibility_changed"]
[connection signal="toggled" from="button" to="." method="_on_button_toggled"]

View File

@@ -2,8 +2,6 @@
extends PanelContainer
var save_modulate: Color
func set_text(val: String): $button.set_text(val)
func set_pressed(val: bool): $button.set_pressed(val)
func set_disabled(val: bool): disabled = val
@@ -21,6 +19,11 @@ func is_toggle_mode(): return $button.is_toggle_mode()
set(val): $state.set_texture(val)
@export var strips_rotation: float:
set(val): $back.strips_rotation = deg_to_rad(val)
get: return rad_to_deg($back.strips_rotation)
@export var text: String = '':
set(val): $button.set_text(val)
get: return $button.get_text()
@@ -30,10 +33,7 @@ func is_toggle_mode(): return $button.is_toggle_mode()
set(val):
$button.set_disabled(val)
$back.disabled = val
if val:
$state.modulate.a = 0.5
else:
$state.modulate.a = 1.0
$state.modulate.a = 0.5 if val else 1.0
get: return $button.disabled
@@ -42,10 +42,8 @@ func is_toggle_mode(): return $button.is_toggle_mode()
get: return $button.is_pressed()
@export var toggle_mode: bool = false:
set(val):
if is_inside_tree():
$button.set_toggle_mode(val)
@export var toggle_mode: bool:
set(val): $button.set_toggle_mode(val)
get: return $button.is_toggle_mode()
@@ -57,12 +55,12 @@ func _on_resized() -> void:
func _enter_tree() -> void:
$back.scale = size
$back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0))
save_modulate = modulate
$button.set_toggle_mode(true)
$button.connect('toggled', Callable(self, '_on_button_toggled'))
func set_toggle_mode (val: bool):
if is_inside_tree():
$button.set_toggle_mode(val)
$button.set_toggle_mode(val)
func _on_button_toggled(val: bool):