From eba916fb812a7c07eb4874b9f7241d63daaeff2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojte=CC=8Cch=20Struha=CC=81r?= Date: Mon, 3 Mar 2025 23:03:10 +0100 Subject: [PATCH] WIP: Camera transforms not working --- levels/level_my_portals.tscn | 7 ++++--- player.gd | 2 +- player.tscn | 2 +- scripts/my_portal.gd | 13 +++++++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/levels/level_my_portals.tscn b/levels/level_my_portals.tscn index b7edde2..a21467a 100644 --- a/levels/level_my_portals.tscn +++ b/levels/level_my_portals.tscn @@ -22,7 +22,6 @@ sky_material = SubResource("ProceduralSkyMaterial_t21k5") [sub_resource type="Environment" id="Environment_b88kk"] background_mode = 2 sky = SubResource("Sky_eoaoo") -tonemap_mode = 2 glow_enabled = true [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_7nftg"] @@ -135,6 +134,7 @@ shape = SubResource("ConcavePolygonShape3D_7nftg") [node name="CSGBakedMeshInstance3D" type="MeshInstance3D" parent="Orange/Room/Wall"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +visible = false material_override = ExtResource("1_v6nyh") mesh = SubResource("ArrayMesh_v6nyh") @@ -184,7 +184,7 @@ mesh = SubResource("BoxMesh_pvdtj") skeleton = NodePath("../..") [node name="OrangePortal" type="MeshInstance3D" parent="Orange" node_paths=PackedStringArray("exit_portal")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2, 0) +transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 0, 2, 0) mesh = SubResource("ArrayMesh_pccqs") skeleton = NodePath("../..") script = ExtResource("7_pvdtj") @@ -204,6 +204,7 @@ shape = SubResource("ConcavePolygonShape3D_7nftg") [node name="CSGBakedMeshInstance3D" type="MeshInstance3D" parent="Green/Room/Wall"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +visible = false material_override = ExtResource("1_v6nyh") mesh = SubResource("ArrayMesh_v6nyh") @@ -253,7 +254,7 @@ mesh = SubResource("SphereMesh_pccqs") skeleton = NodePath("../../../Orange") [node name="GreenPortal" type="MeshInstance3D" parent="Green" node_paths=PackedStringArray("exit_portal")] -transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 2, 0) +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2, 0) mesh = SubResource("ArrayMesh_pvdtj") skeleton = NodePath("../..") script = ExtResource("7_pvdtj") diff --git a/player.gd b/player.gd index 5cd89b5..f4d1f23 100644 --- a/player.gd +++ b/player.gd @@ -1,6 +1,6 @@ extends CharacterBody3D -@onready var camera: Camera3D = $Camera3D +@onready var camera: Camera3D = $PlayerCamera const SPEED = 5.0 const JUMP_VELOCITY = 4.5 diff --git a/player.tscn b/player.tscn index 105df18..d2b8a1d 100644 --- a/player.tscn +++ b/player.tscn @@ -17,7 +17,7 @@ height = 1.75 script = ExtResource("1_4flbx") metadata/teleportable = false -[node name="Camera3D" type="Camera3D" parent="."] +[node name="PlayerCamera" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32153, 0) cull_mask = 1048571 diff --git a/scripts/my_portal.gd b/scripts/my_portal.gd index c2bfdf0..64ecfa2 100644 --- a/scripts/my_portal.gd +++ b/scripts/my_portal.gd @@ -17,6 +17,8 @@ var exit_scale: int = 1 # This is not really needed I think func _ready() -> void: assert(exit_portal != null) + # Update portals last + process_priority = 1000 _main_camera = get_viewport().get_camera_3d() # NOTE: In case the exit portal is in a different world, better put the viewport and camera @@ -29,13 +31,24 @@ func _ready() -> void: _camera.name = name + "_ExitCamera" _viewport.add_child(_camera) + # FIXME: Remove this - debug only + var debug = MeshInstance3D.new() + debug.rotate_z(PI / 2) + debug.material_override = StandardMaterial3D.new() + debug.material_override.albedo_color = Color.MAGENTA + debug.mesh = PrismMesh.new() + _camera.add_child(debug) + + var mat: ShaderMaterial = MY_PORTAL_MATERIAL material_override = mat mat.set_shader_parameter("albedo", _viewport.get_texture()) + print(name, ": _ready") func _process(delta: float) -> void: _camera.global_transform = real_to_exit_transform(_main_camera.global_transform) + # TODO: Adjust near clip plane to the portal _camera.near = _main_camera.near _camera.far = _main_camera.far