From b67f0d92637fd072d3fb2f7e4d0f55fe9f12f7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojte=CC=8Cch=20Struha=CC=81r?= Date: Thu, 13 Feb 2025 20:54:03 +0100 Subject: [PATCH] Environment adapter uses portal group --- addons/simple-portal-system/scripts/portal.gd | 3 +++ levels/level_3_rooms.tscn | 3 +-- portal_environment_adapter.gd | 8 +++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/simple-portal-system/scripts/portal.gd b/addons/simple-portal-system/scripts/portal.gd index a73e623..3ab52e7 100644 --- a/addons/simple-portal-system/scripts/portal.gd +++ b/addons/simple-portal-system/scripts/portal.gd @@ -63,6 +63,9 @@ var _exit_camera:Camera3D # The number of seconds until the viewport updates its size var _seconds_until_resize:float +func _enter_tree() -> void: + add_to_group("portals") + func _ready() -> void: if not is_inside_tree(): push_error("The portal \"%s\" is not inside a SceneTree." % name) diff --git a/levels/level_3_rooms.tscn b/levels/level_3_rooms.tscn index 4ea6010..cfafe45 100644 --- a/levels/level_3_rooms.tscn +++ b/levels/level_3_rooms.tscn @@ -101,7 +101,6 @@ light_color = Color(0.887552, 0.489512, 0.22965, 1) light_energy = 3.0 omni_range = 4.0 -[node name="PortalEnvironmentAdapter" type="Node" parent="." node_paths=PackedStringArray("base", "portals")] +[node name="PortalEnvironmentAdapter" type="Node" parent="." node_paths=PackedStringArray("base")] script = ExtResource("7_2gewm") base = NodePath("../WorldEnvironment") -portals = [NodePath("../Portal_red"), NodePath("../Portal_orange")] diff --git a/portal_environment_adapter.gd b/portal_environment_adapter.gd index 3e4c0e8..7126665 100644 --- a/portal_environment_adapter.gd +++ b/portal_environment_adapter.gd @@ -6,12 +6,14 @@ extends Node ## tonemapping (linear with exposure 1). @export var base: WorldEnvironment -@export var portals: Array[Portal] = [] func _ready() -> void: var adapted_env: Environment = base.environment.duplicate(false) adapted_env.tonemap_mode = Environment.TONE_MAPPER_LINEAR + # exposure is the only thing the linear tonemapper takes into account adapted_env.tonemap_exposure = 1 - for p in portals: - p.exit_environment = adapted_env + for p in get_tree().get_nodes_in_group("portals"): + print(p.name) + if p is Portal: + p.exit_environment = adapted_env