WIP: Modifying the client node

This commit is contained in:
2025-02-17 13:57:31 +01:00
parent 687c2ae1f5
commit 1323dbf154
19 changed files with 906 additions and 41 deletions

View File

@ -25,31 +25,12 @@ func _ready() -> void:
if err != OK:
push_error("Couldn't load bullet spawner")
# Adding a node that should be used by the clients
client_node = Node3D.new()
client_node.name = "ClientNode"
add_child(client_node)
# add objects spawner
if not OS.has_feature("dedicated_server"):
err = _add_entry_screen()
if err != OK:
logger.error("Couldn't load the entry screen, err " + str(err))
func _process(delta: float) -> void:
if not multiplayer.is_server():
pass
#@rpc("call_local", "unreliable", "any_peer")p
#func _request_spawn():
#var id: int = multiplayer.get_remote_sender_id()
#_spawn_player(id)
#
#func _spawn_player(id: int):
#if multiplayer.is_server():
#player_spawner.spawn_players(id)
#var controlled_node: ServerNode = player_spawner.get_player_node(id)
#var position := controlled_node.shared_node.global_position
#_spawn_player_controller_node.rpc_id(id, position.x, position.y, position.z)
@rpc("any_peer", "call_local", "unreliable")
func _spawn_player_controller_node(x: float, y: float, z: float):

View File

@ -22,11 +22,12 @@ func _process(delta: float) -> void:
for player in server_node.players:
if not spawned_players.has(player):
logger.debug("Spawning a player with id: " + str(player))
var err := spawn_players(server_node.players[player])
if err != OK:
logger.error("Couldn't spawn a player, err: " + str(err))
else:
spawned_players[player] = 1
if player.has("side"):
var err := spawn_players(server_node.players[player])
if err != OK:
logger.error("Couldn't spawn a player, err: " + str(err))
else:
spawned_players[player] = 1
# -- Spawn a player node and sync it across all peers
func spawn_players(player_data: Dictionary) -> Error:

View File

@ -1,8 +1,8 @@
[gd_scene load_steps=12 format=3 uid="uid://btlkodvngm634"]
[ext_resource type="Script" path="res://scenes_old/player/hud.gd" id="1_1ffy2"]
[ext_resource type="Script" path="res://scenes/player/hud.gd" id="1_6gu0f"]
[ext_resource type="Texture2D" uid="uid://oopj5mj1vdp0" path="res://assets/crosshairs/crosshair_default.png" id="1_u13st"]
[ext_resource type="Script" path="res://scenes_old/player/gun_mount.gd" id="3_qmcsd"]
[ext_resource type="Script" path="res://scenes/player/gun_mount.gd" id="3_d72tg"]
[sub_resource type="LabelSettings" id="LabelSettings_3bk8i"]
font_size = 70
@ -84,7 +84,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_1ffy2")
script = ExtResource("1_6gu0f")
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 1
@ -144,7 +144,7 @@ environment = SubResource("Environment_i2xeo")
fov = 50.0
[node name="GunMount" type="Node3D" parent="SubViewportContainer/SubViewport/Camera3D"]
script = ExtResource("3_qmcsd")
script = ExtResource("3_d72tg")
[node name="AnimationPlayer" type="AnimationPlayer" parent="SubViewportContainer/SubViewport/Camera3D/GunMount"]
libraries = {

View File

@ -1,9 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://conlvf1vqni6c"]
[ext_resource type="Script" path="res://scenes_old/player/player_node.gd" id="1_q00bg"]
[ext_resource type="PackedScene" uid="uid://cirun2v34nfpg" path="res://scenes_old/player/shared_node.tscn" id="2_4mkad"]
[ext_resource type="Script" path="res://scenes/player/player_node.gd" id="1_qliix"]
[ext_resource type="PackedScene" uid="uid://cirun2v34nfpg" path="res://scenes/player/shared_node.tscn" id="2_4mkad"]
[node name="PlayerNode" type="Node3D"]
script = ExtResource("1_q00bg")
script = ExtResource("1_qliix")
[node name="SharedNode" parent="." instance=ExtResource("2_4mkad")]

View File

@ -11,7 +11,7 @@ var first_slot_weapon: WeaponController
@export var input_direction: Vector2
@export var owner_id: int = 0
@onready var camera_mount: Node3D = $SharedNode/CameraMount
@onready var camera_mount: CameraMount = $SharedNode/CameraMount
@onready var shared_node: CharacterBody3D = $SharedNode
@onready var bullet_starting_point: Node3D = $SharedNode/CameraMount/BulletStartingPoint
@onready var map_controller: MapController
@ -22,6 +22,7 @@ func _ready() -> void:
shared_node.set_collision_mask_value(1, true)
shared_node.set_collision_mask_value(3, true)
map_controller = find_parent("Map")
camera_mount.active = true
_load_weapon()
#map_controller.spawn_player_model(shared_node, owner_id)
# Load the default weapon and set the current attack properties

View File

@ -1,4 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cirun2v34nfpg"]
[gd_scene load_steps=3 format=3 uid="uid://cirun2v34nfpg"]
[ext_resource type="Script" path="res://scenes/utils/camera_mount/camera_mount.gd" id="1_u7w0x"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_r38x6"]
height = 1.8
@ -11,11 +13,9 @@ collision_mask = 0
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0)
shape = SubResource("CapsuleShape3D_r38x6")
[node name="BulletStartingPoint" type="Node3D" parent="."]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 1.6036, -0.127098)
[node name="CameraMount" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6036, -0.127098)
[node name="Camera3D" type="Camera3D" parent="CameraMount"]
cull_mask = 524285
[node name="BulletStartingPoint" type="Node3D" parent="CameraMount"]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.64754, 0)
script = ExtResource("1_u7w0x")

View File

@ -0,0 +1,21 @@
extends Node3D
class_name CameraMount
# -- When camera mount is not active, client shouldn't connect to it
@export var active: bool = false
@export var default: bool = false
var camera: Camera3D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
camera = Camera3D.new()
add_child(camera)
@rpc("any_peer", "call_local", "reliable")
func connect_to_camera() -> void :
if active:
camera.make_current()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://316q8oy76ev1"]
[ext_resource type="Script" path="res://scenes/utils/camera_mount/camera_mount.gd" id="1_5dtrj"]
[node name="CameraMount" type="Node3D"]
script = ExtResource("1_5dtrj")

View File

@ -0,0 +1,16 @@
extends Node3D
class_name ClientNode
var available_cameras: Array[CameraMount] = []
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta: float) -> void:
var game_root := helpers.get_root_node()
var available_cameras_raw: Array[Node] = game_root.find_children("*", "CameraMount", true, false)
for camera_raw in available_cameras_raw:
var camera: CameraMount = camera_raw as CameraMount
if camera.active:
camera.connect_to_camera()
available_cameras.append(camera)

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://b4y8gnogfoulk"]
[ext_resource type="Script" path="res://scenes/utils/client_node/client_node.gd" id="1_otqq8"]
[node name="ClientNode" type="Node3D"]
script = ExtResource("1_otqq8")

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://f3lbhroreypw"]
[gd_scene load_steps=3 format=3 uid="uid://f3lbhroreypw"]
[ext_resource type="Script" path="res://scenes/utils/game_root/game_root.gd" id="1_ogtsj"]
[ext_resource type="Script" path="res://scenes/utils/client_node/client_node.gd" id="2_75551"]
[node name="GameRoot" type="Node"]
script = ExtResource("1_ogtsj")
@ -14,4 +15,7 @@ spawn_limit = 1
[node name="Level" type="Node3D" parent="."]
[node name="ClientNode" type="Node3D" parent="."]
script = ExtResource("2_75551")
[connection signal="load_map" from="." to="." method="_on_load_map"]