extends Resource ## OcclusionPolicy — config for the RayCast-based per-surface material fade used by ## [IsometricFollowCamera] (NEO-17). No `class_name` — see repo Godot headless / CI notes. ## Master switch. When false, no rays are cast and any active overrides are restored. @export var enabled: bool = true ## Target alpha applied to occluder surfaces (0 = fully transparent, 1 = opaque). @export_range(0.0, 1.0) var fade_alpha: float = 0.25 ## Scene group that opts a [CollisionObject3D] into occlusion fading. @export var occluder_group: String = "occluder" ## Physics collision mask for the ray. Default 1 (world geometry layer). ## The Player is on layer 2 and is already excluded with this default. @export_flags_3d_physics var occluder_collision_mask: int = 1 ## Max successive [method PhysicsDirectSpaceState3D.intersect_ray] calls per frame. ## Caps cost when occluders are stacked along the ray. @export var max_occluder_cast_depth: int = 4 ## When > 0, emits [method push_warning] when the active occluder count reaches this ## value. Set to 0 to disable. Marker for stress-test reference (TODO E9.M1 telemetry). @export var occluder_count_log_threshold: int = 0 ## Returns true when the policy should be applied this frame. func is_valid() -> bool: return enabled and fade_alpha >= 0.0