1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-25 23:13:14 +00:00
Pixelorama/src/Classes/LayerEffect.gd
Emmanouil Papadeas 96d0efe3ba Organize image and layer effects into subcategories
The amount of image/layer effects keeps getting bigger and bigger, especially now that users can load their own effects.

At some point, it might also be a good idea to refactor the code so that image and layer effect code combines. Image effects could use ShaderLoader.gd to generate their UI, like layer effects do.
2025-01-31 00:14:54 +02:00

43 lines
1.1 KiB
GDScript

class_name LayerEffect
extends RefCounted
var name := ""
var shader: Shader
var category := ""
var params := {}
var enabled := true
func _init(_name := "", _shader: Shader = null, _category := "", _params := {}) -> void:
name = _name
shader = _shader
category = _category
params = _params
func duplicate() -> LayerEffect:
return LayerEffect.new(name, shader, category, params.duplicate())
func serialize() -> Dictionary:
var p_str := {}
for param in params:
p_str[param] = var_to_str(params[param])
return {"name": name, "shader_path": shader.resource_path, "params": p_str, "enabled": enabled}
func deserialize(dict: Dictionary) -> void:
if dict.has("name"):
name = dict["name"]
if dict.has("shader_path"):
var path: String = dict["shader_path"]
var shader_to_load := load(path)
if is_instance_valid(shader_to_load) and shader_to_load is Shader:
shader = shader_to_load
if dict.has("params"):
for param in dict["params"]:
if typeof(dict["params"][param]) == TYPE_STRING:
dict["params"][param] = str_to_var(dict["params"][param])
params = dict["params"]
if dict.has("enabled"):
enabled = dict["enabled"]