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

105 lines
4.3 KiB
GDScript

@tool
class_name SkyConfig
extends Resource
@export_group("Sun Settings")
@export var sun_color: Color = Color(1.0, 0.95, 0.8)
@export var sun_intensity: float = 1.0
@export var sun_size: float = 0.05
@export_group("Moon Settings")
@export var moon_color: Color = Color(0.8, 0.85, 1.0)
@export var moon_intensity: float = 0.3
@export var moon_size: float = 0.03
@export_group("Ambient Settings")
@export var ambient_color: Color = Color(0.4, 0.5, 0.6)
@export var ambient_intensity: float = 0.5
@export_group("Fog Settings")
@export var fog_color: Color = Color(0.7, 0.8, 0.9)
@export var fog_density: float = 0.01
@export var fog_height: float = 0.0
@export var fog_height_density: float = 0.1
@export_group("Sky Gradient")
@export var sky_top_color: Color = Color(0.2, 0.4, 0.8)
@export var sky_horizon_color: Color = Color(0.6, 0.7, 0.9)
@export var sky_bottom_color: Color = Color(0.4, 0.5, 0.6)
@export var horizon_blend: float = 0.5
@export_group("Stars")
@export var stars_visibility: float = 0.0
@export var stars_tint: Color = Color.WHITE
@export_group("Cloud Defaults")
@export var cloud_coverage: float = 0.3
@export var cloud_opacity: float = 0.8
@export var cloud_color: Color = Color.WHITE
@export var cloud_shadow_color: Color = Color(0.6, 0.6, 0.7)
@export_group("Post Process")
@export var sun_glow_intensity: float = 0.5
@export var sun_glow_size: float = 0.2
@export var gradient_intensity: float = 1.0
func lerp_to(other: SkyConfig, weight: float) -> SkyConfig:
var result := SkyConfig.new()
result.sun_color = sun_color.lerp(other.sun_color, weight)
result.sun_intensity = lerpf(sun_intensity, other.sun_intensity, weight)
result.sun_size = lerpf(sun_size, other.sun_size, weight)
result.moon_color = moon_color.lerp(other.moon_color, weight)
result.moon_intensity = lerpf(moon_intensity, other.moon_intensity, weight)
result.moon_size = lerpf(moon_size, other.moon_size, weight)
result.ambient_color = ambient_color.lerp(other.ambient_color, weight)
result.ambient_intensity = lerpf(ambient_intensity, other.ambient_intensity, weight)
result.fog_color = fog_color.lerp(other.fog_color, weight)
result.fog_density = lerpf(fog_density, other.fog_density, weight)
result.fog_height = lerpf(fog_height, other.fog_height, weight)
result.fog_height_density = lerpf(fog_height_density, other.fog_height_density, weight)
result.sky_top_color = sky_top_color.lerp(other.sky_top_color, weight)
result.sky_horizon_color = sky_horizon_color.lerp(other.sky_horizon_color, weight)
result.sky_bottom_color = sky_bottom_color.lerp(other.sky_bottom_color, weight)
result.horizon_blend = lerpf(horizon_blend, other.horizon_blend, weight)
result.stars_visibility = lerpf(stars_visibility, other.stars_visibility, weight)
result.stars_tint = stars_tint.lerp(other.stars_tint, weight)
result.cloud_coverage = lerpf(cloud_coverage, other.cloud_coverage, weight)
result.cloud_opacity = lerpf(cloud_opacity, other.cloud_opacity, weight)
result.cloud_color = cloud_color.lerp(other.cloud_color, weight)
result.cloud_shadow_color = cloud_shadow_color.lerp(other.cloud_shadow_color, weight)
result.sun_glow_intensity = lerpf(sun_glow_intensity, other.sun_glow_intensity, weight)
result.sun_glow_size = lerpf(sun_glow_size, other.sun_glow_size, weight)
result.gradient_intensity = lerpf(gradient_intensity, other.gradient_intensity, weight)
return result
func duplicate_config() -> SkyConfig:
var copy := SkyConfig.new()
copy.sun_color = sun_color
copy.sun_intensity = sun_intensity
copy.sun_size = sun_size
copy.moon_color = moon_color
copy.moon_intensity = moon_intensity
copy.moon_size = moon_size
copy.ambient_color = ambient_color
copy.ambient_intensity = ambient_intensity
copy.fog_color = fog_color
copy.fog_density = fog_density
copy.fog_height = fog_height
copy.fog_height_density = fog_height_density
copy.sky_top_color = sky_top_color
copy.sky_horizon_color = sky_horizon_color
copy.sky_bottom_color = sky_bottom_color
copy.horizon_blend = horizon_blend
copy.stars_visibility = stars_visibility
copy.stars_tint = stars_tint
copy.cloud_coverage = cloud_coverage
copy.cloud_opacity = cloud_opacity
copy.cloud_color = cloud_color
copy.cloud_shadow_color = cloud_shadow_color
copy.sun_glow_intensity = sun_glow_intensity
copy.sun_glow_size = sun_glow_size
copy.gradient_intensity = gradient_intensity
return copy