class_name PlanetSurfaceProfile extends Resource # Declarative recipe for a landed planet surface. The host scene only knows # how to apply one of these; the feature scene owns the actual resource nodes. @export var profile_id: String = "rocky" @export var features_scene: PackedScene # Optional self-contained gameplay encounter. Unlike an authored PlanetSetup, # this owns its own objectives and layout and is therefore not configurable in # the setup editor. @export var encounter_scene: PackedScene @export var editor_visible: bool = true @export var show_capture_status: bool = true # Which shader draws this surface's backdrop. Every profile names one - the # old "null means keep whatever the scene already had" convention is what let # the game and the setup editor drift apart, since each scene "already had" a # different shader. SurfaceBackground.apply_profile() is the only consumer. @export var background_shader: Shader = null # Optional ready-made field for a tiled background shader. Procedural rocky # terrain still bakes once; authored surfaces can avoid both that load spike # and all per-frame procedural fragment work by shipping their tile directly. @export var background_field_texture: Texture2D = null # World-space size of one background field cell. Smaller values reveal more # of the authored field at once without changing the gameplay camera zoom. @export_range(40.0, 440.0, 1.0) var background_cell_size: float = 220.0 @export var base_color: Color = Color(0.75, 0.75, 0.76, 1.0) @export var crater_color: Color = Color(0.44, 0.44, 0.45, 1.0) @export var highlight_color: Color = Color(0.89, 0.89, 0.9, 1.0) @export var caption_color: Color = Color(0.08, 0.16, 0.2, 1.0) @export var caption_outline_color: Color = Color(0.9, 0.95, 0.96, 0.8)