@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