From: Clifton Palmer Date: Wed, 25 Dec 2024 13:52:00 +0000 (+0200) Subject: Added map split screen X-Git-Tag: 0.9.0~2 X-Git-Url: http://git.purplebirdman.com/lightcycles.git/commitdiff_plain/58e6e643ec796a676c4463b319b3cabb26f07f9d Added map split screen --- diff --git a/map/split_screen_container.gd b/map/split_screen_container.gd index b5fc1bc..6d8a1c2 100644 --- a/map/split_screen_container.gd +++ b/map/split_screen_container.gd @@ -2,13 +2,20 @@ class_name SplitScreenContainer extends GridContainer -@onready var viewport1: SubViewport = $SubViewportContainer/SubViewport -@onready var viewport2: SubViewport = $SubViewportContainer2/SubViewport2 +@onready var _viewport1: SubViewport = %SubViewport_Player1 +@onready var _viewport2: SubViewport = %SubViewport_Player2 +@onready var _viewport_map: SubViewport = %SubViewport_map func set_splitscreen(players: Array[Player]) -> void: - var viewports = [viewport1, viewport2] + var viewports = [_viewport1, _viewport2] for player in players: var camera_rid = player.get_camera_rid() var viewport_rid = viewports.pop_front().get_viewport_rid() RenderingServer.viewport_attach_camera(viewport_rid, camera_rid) + + +func set_map(camera: Camera3D) -> void: + var camera_rid = camera.get_camera_rid() + var viewport_rid = _viewport_map.get_viewport_rid() + RenderingServer.viewport_attach_camera(viewport_rid, camera_rid) diff --git a/map/world.gd b/map/world.gd index 6429a3c..27a9208 100644 --- a/map/world.gd +++ b/map/world.gd @@ -2,6 +2,7 @@ extends Node3D @onready var _screen: SplitScreenContainer = $SplitScreenContainer +@onready var _topdown_camera: Camera3D = $topdown_camera var _player_wall_tscn = preload("res://player/player_wall.tscn") var _player_wall_map = {} @@ -24,6 +25,7 @@ func _ready() -> void: var players: Array[Player] = [$Player1, $Player2] _screen.set_splitscreen(players) + _screen.set_map(_topdown_camera) for player in players: player.set_input_map(_input_map.pop_front()) diff --git a/map/world.tscn b/map/world.tscn index cb74967..f86ca94 100644 --- a/map/world.tscn +++ b/map/world.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://6tmryoxhs3yq"] +[gd_scene load_steps=11 format=3 uid="uid://6tmryoxhs3yq"] [ext_resource type="PackedScene" uid="uid://dysxftv7xniv0" path="res://player/player.tscn" id="1_3tqxd"] [ext_resource type="Script" path="res://map/world.gd" id="1_mjcfj"] @@ -26,6 +26,8 @@ size = Vector2(10, 50) [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_qttgn"] data = PackedVector3Array(5, 0, 25, -5, 0, 25, 5, 0, -25, -5, 0, 25, -5, 0, -25, 5, 0, -25) +[sub_resource type="Environment" id="Environment_h5n2a"] + [node name="World" type="Node3D"] script = ExtResource("1_mjcfj") @@ -94,6 +96,12 @@ transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, color = Color(1, 0, 0, 1) distance = 5.0 +[node name="topdown_camera" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 32.95, 0) +environment = SubResource("Environment_h5n2a") +projection = 1 +size = 50.0 + [node name="SplitScreenContainer" type="GridContainer" parent="."] custom_minimum_size = Vector2(3456, 1944) anchors_preset = 15 @@ -103,26 +111,48 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("4_nc5g8") -[node name="SubViewportContainer" type="SubViewportContainer" parent="SplitScreenContainer"] +[node name="HSplitContainer" type="HSplitContainer" parent="SplitScreenContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="SplitScreenContainer/HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +stretch = true + +[node name="SubViewport_map" type="SubViewport" parent="SplitScreenContainer/HSplitContainer/SubViewportContainer"] +unique_name_in_owner = true +handle_input_locally = false +size = Vector2i(1722, 1944) +render_target_update_mode = 4 + +[node name="VSplitContainer" type="VSplitContainer" parent="SplitScreenContainer/HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="SplitScreenContainer/HSplitContainer/VSplitContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 stretch = true -[node name="SubViewport" type="SubViewport" parent="SplitScreenContainer/SubViewportContainer"] +[node name="SubViewport_Player1" type="SubViewport" parent="SplitScreenContainer/HSplitContainer/VSplitContainer/SubViewportContainer"] +unique_name_in_owner = true handle_input_locally = false -size = Vector2i(2, 2) +size = Vector2i(1722, 966) render_target_update_mode = 4 -[node name="SubViewportContainer2" type="SubViewportContainer" parent="SplitScreenContainer"] +[node name="SubViewportContainer2" type="SubViewportContainer" parent="SplitScreenContainer/HSplitContainer/VSplitContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 stretch = true -[node name="SubViewport2" type="SubViewport" parent="SplitScreenContainer/SubViewportContainer2"] +[node name="SubViewport_Player2" type="SubViewport" parent="SplitScreenContainer/HSplitContainer/VSplitContainer/SubViewportContainer2"] +unique_name_in_owner = true handle_input_locally = false -size = Vector2i(2, 2) +size = Vector2i(1722, 966) render_target_update_mode = 4 [connection signal="playerDestroyed" from="Player1" to="." method="_on_player_destroyed"] diff --git a/player/player_wall.tscn b/player/player_wall.tscn index 4493031..3012a7f 100644 --- a/player/player_wall.tscn +++ b/player/player_wall.tscn @@ -6,13 +6,15 @@ [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sk1tc"] albedo_color = Color(0.716296, 0.716296, 0.716296, 1) albedo_texture = ExtResource("2_uvwff") +emission_enabled = true emission = Color(0.726732, 0.726732, 0.726732, 1) +emission_energy_multiplier = 0.25 uv1_triplanar = true uv1_world_triplanar = true [sub_resource type="BoxMesh" id="BoxMesh_p4d0s"] material = SubResource("StandardMaterial3D_sk1tc") -size = Vector3(1, 0.02, 1) +size = Vector3(1, 0.04, 1) [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_aaxpr"] points = PackedVector3Array(0.508, 0.014, 0.5, -0.508, -0.018, -0.5, -0.508, 0.014, -0.5, 0.508, -0.018, -0.5, -0.508, -0.018, 0.5, -0.508, 0.014, 0.5, 0.508, 0.014, -0.5, 0.508, -0.018, 0.5)