1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-20 12:33:14 +00:00

Change shader color in the experimental shader feature

Feature not exposed to the end user yet
This commit is contained in:
Manolis Papadeas 2022-04-08 02:57:58 +03:00
parent 2a6c5b9ef6
commit 41d9add6a7
2 changed files with 36 additions and 1 deletions

View file

@ -133,6 +133,19 @@ func change_shader(shader_tmp: Shader, name: String) -> void:
hbox.add_child(label)
hbox.add_child(spinbox)
shader_params.add_child(hbox)
elif u_type == "vec4":
if "hint_color" in u_hint:
var label := Label.new()
label.text = u_name
var color = vec4str_to_color(u_value)
var color_button := ColorPickerButton.new()
color_button.rect_min_size = Vector2(20, 20)
color_button.color = color
color_button.connect("color_changed", self, "set_shader_param", [u_name])
var hbox := HBoxContainer.new()
hbox.add_child(label)
hbox.add_child(color_button)
shader_params.add_child(hbox)
# print("---")
@ -146,3 +159,24 @@ func change_shader(shader_tmp: Shader, name: String) -> void:
func set_shader_param(value, param: String) -> void:
preview.material.set_shader_param(param, value)
func vec4str_to_color(vec4: String) -> Color:
vec4 = vec4.replace("vec4(", "")
vec4 = vec4.replace(")", "")
var rgba_values: PoolStringArray = vec4.split(",")
var red := float(rgba_values[0])
var green := float(rgba_values[0])
if rgba_values.size() >= 2:
green = float(rgba_values[1])
var blue := float(rgba_values[0])
if rgba_values.size() >= 3:
blue = float(rgba_values[2])
var alpha := float(rgba_values[0])
if rgba_values.size() == 4:
alpha = float(rgba_values[3])
var color: Color = Color(red, green, blue, alpha)
return color

View file

@ -69,7 +69,8 @@ window_title = "Open a File"
resizable = true
mode = 0
access = 2
filters = PoolStringArray( "*shader" )
filters = PoolStringArray( "*shader; Godot Shader File" )
show_hidden_files = true
current_dir = "/"
current_path = "/"