Files
Trinittu/dynamic-sky/resources/cloud_layer_config.gd
2026-02-03 11:26:48 +01:00

66 lines
1.5 KiB
GDScript

@tool
class_name CloudLayerConfig
extends Resource
enum LayerType {
LOW,
MID,
HIGH,
WISPS
}
@export var layer_type: LayerType = LayerType.MID
@export var enabled: bool = true
@export_group("Texture")
@export var texture: Texture2D
@export var texture_scale: Vector2 = Vector2(1.0, 1.0)
@export var tiling: Vector2 = Vector2(4.0, 4.0)
@export_group("Appearance")
@export var opacity: float = 0.8
@export var color_tint: Color = Color.WHITE
@export var shadow_color: Color = Color(0.6, 0.6, 0.7)
@export_group("Motion")
@export var flow_direction: Vector2 = Vector2(1.0, 0.0)
@export var flow_speed: float = 0.02
@export var parallax_depth: float = 1.0
@export_group("Lighting")
@export var receive_light: bool = true
@export var light_influence: float = 1.0
@export var rim_glow_intensity: float = 0.3
func get_layer_height() -> float:
match layer_type:
LayerType.LOW:
return 0.2
LayerType.MID:
return 0.5
LayerType.HIGH:
return 0.8
LayerType.WISPS:
return 0.9
return 0.5
func duplicate_config() -> CloudLayerConfig:
var copy := CloudLayerConfig.new()
copy.layer_type = layer_type
copy.enabled = enabled
copy.texture = texture
copy.texture_scale = texture_scale
copy.tiling = tiling
copy.opacity = opacity
copy.color_tint = color_tint
copy.shadow_color = shadow_color
copy.flow_direction = flow_direction
copy.flow_speed = flow_speed
copy.parallax_depth = parallax_depth
copy.receive_light = receive_light
copy.light_influence = light_influence
copy.rim_glow_intensity = rim_glow_intensity
return copy