Trying something that will probably never happen

Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
2025-05-31 23:39:45 +02:00
parent 77d37caeb2
commit f17726240d
21 changed files with 16 additions and 10 deletions

View File

@ -2,6 +2,7 @@
# -- of the models that are managed by the client and not by the server
class_name ClientSpace extends Node3D
@export var player_server_node: ServerSideCharacter = null
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.

View File

@ -3,6 +3,7 @@ class_name MapController extends Node3D
@onready var spawn_controller: SpawnController = $SpawnLocations
var player_space: Node3D = null
var player_controller: PlayerNode = null
var client_space: ClientSpace = null
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
@ -15,6 +16,7 @@ func _ready() -> void:
player_space.name = "PlayerSpace"
add_child(player_space)
spawn_controller.player_space = player_space
client_space.player_server_node = player_space.find_child(str(multiplayer.get_unique_id()))
if multiplayer.is_server():
pass
else:
@ -29,21 +31,20 @@ func request_state():
spawn_controller.spawn_player(player_casted.player_id, player_casted.global_transform)
func add_client_space() -> Error :
return load_scene("levels/base/client_space/client_space.tscn")
func load_scene(rel_path: String) -> Error :
var path := consts.SCENES_PATH + rel_path
var path := consts.SCENES_PATH + "levels/base/client_space/client_space.tscn"
logger.info("loading scene from " + path)
if not ResourceLoader.exists(path):
logger.error("scene " + path + " doesn't exist")
return ERR_DOES_NOT_EXIST
var scene: PackedScene = ResourceLoader.load(path)
if scene.can_instantiate():
# -- TODO: May we should case to a real type instead
var node: Variant = scene.instantiate()
player_controller = node as PlayerNode
var node: ClientSpace = scene.instantiate()
#node.player_server_id = multiplayer.get_unique_id()
logger.info("loading scene: " + path)
add_child(node)
client_space = node
else:
logger.error("can't initialize")
return ERR_CANT_OPEN

View File

@ -1,53 +0,0 @@
@tool
class_name AimingModifier
extends SkeletonModifier3D
@export var look_raycast: RayCast3D
@export var aim_raycast: RayCast3D
@export_enum(" ") var bone: String
@export var aiming: bool = false
func _validate_property(property: Dictionary) -> void:
if property.name == "bone":
var skeleton: Skeleton3D = get_skeleton()
if skeleton:
property.hint = PROPERTY_HINT_ENUM
property.hint_string = skeleton.get_concatenated_bone_names()
func _process_modification() -> void:
var skeleton: Skeleton3D = get_skeleton()
if !skeleton:
return
var bone_idx: int = skeleton.find_bone(bone)
if bone_idx == -1:
return
var target_position = look_raycast.get_collision_point() if look_raycast.is_colliding() else look_raycast.global_transform.origin + - look_raycast.global_transform.basis.z * 30
var target_position_local = to_local(target_position)
#aim_raycast.= target_position
var bone_pose = skeleton.get_bone_global_pose(bone_idx)
#print(new_basis)
#skeleton.set_bone_global_pose(bone_idx, Transform3D(bone_pose.basis, bone_pose.origin + Vector3(0, 0, 1)))
var gun_position = aim_raycast.global_transform.origin
var gun_direction = (target_position - gun_position).normalized()
if aiming:
var new_pose = bone_pose.looking_at(target_position_local, Vector3.FORWARD, true)
var new_basis: Basis
new_basis.y = new_pose.basis.z
#new_basis.y.y = -new_basis.y.y
new_basis.z = new_pose.basis.x
new_basis.x = new_pose.basis.y
new_pose.basis = new_basis
skeleton.set_bone_global_pose(bone_idx, new_pose)
func z_and_y_inverse(v : Vector3) -> Vector3 :
var tmp: float = v.x
v.x = v.y
v.y = tmp
return v

View File

@ -1 +0,0 @@
uid://btsjychrq887j

View File

@ -1,45 +0,0 @@
@tool
class_name BodyFollowsHead
extends SkeletonModifier3D
@export_enum(" ") var head: String
@export_enum(" ") var hips: String
func _validate_property(property: Dictionary) -> void:
if property.name == "head":
var skeleton: Skeleton3D = get_skeleton()
if skeleton:
property.hint = PROPERTY_HINT_ENUM
property.hint_string = skeleton.get_concatenated_bone_names()
if property.name == "hips":
var skeleton: Skeleton3D = get_skeleton()
if skeleton:
property.hint = PROPERTY_HINT_ENUM
property.hint_string = skeleton.get_concatenated_bone_names()
func _process_modification() -> void:
var skeleton: Skeleton3D = get_skeleton()
if !skeleton:
return
var head_idx: int = skeleton.find_bone(head)
var head_pose: Transform3D = skeleton.get_bone_global_pose(head_idx)
var hips_idx: int = skeleton.find_bone(hips)
var hips_pose: Transform3D = skeleton.get_bone_global_pose(hips_idx)
var new_basis: Basis
new_basis.y = Vector3.UP
#
#var hips_basis: Basis = hips_pose.basis
#var head_basis: Basis = head_pose.basis
#var head_yaw = head_basis.get_euler().y # Y-axis rotation in radians
#var hips_euler = hips_basis.get_euler()
#var hips_yaw = hips_euler.x
#var new_yaw = lerp_angle(hips_yaw, head_yaw, 100)
#hips_euler.x = new_yaw
#hips_basis = Basis.from_euler(hips_euler)
# Apply the new transform back to the skeleton
hips_pose.basis = hips_basis
skeleton.set_bone_global_pose(hips_idx, hips_pose)

View File

@ -1 +0,0 @@
uid://cw8151er1e54y

View File

@ -11,4 +11,5 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0)
shape = SubResource("CapsuleShape3D_g8geq")
[node name="CameraMountPoint" type="Node3D" parent="."]
editor_description = "It is used for rotating the real camera mount"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.167045, 1.31595, 0)

View File

@ -1,42 +0,0 @@
@tool
class_name LookForwardModifier
extends SkeletonModifier3D
@export var target_object: Marker3D
@export var head_marker: Marker3D
@export_enum(" ") var bone: String
func _validate_property(property: Dictionary) -> void:
if property.name == "bone":
var skeleton: Skeleton3D = get_skeleton()
if skeleton:
property.hint = PROPERTY_HINT_ENUM
property.hint_string = skeleton.get_concatenated_bone_names()
func _process_modification() -> void:
var skeleton: Skeleton3D = get_skeleton()
if !skeleton:
return
var bone_idx: int = skeleton.find_bone(bone)
if bone_idx == -1:
return
var target_position_global: Vector3 = target_object.global_position
var target_position_local: Vector3 = to_local(target_position_global)
var head_bone_pose: Transform3D = skeleton.get_bone_global_pose(bone_idx)
var new_pose: Transform3D = head_bone_pose.looking_at(target_position_local, Vector3.FORWARD, true)
var new_basis: Basis
new_basis.y = new_pose.basis.y
new_basis.z = new_pose.basis.z
new_basis.x = new_pose.basis.x
new_pose.basis = new_basis
skeleton.set_bone_global_pose(bone_idx, new_pose)
func z_and_y_inverse(v : Vector3) -> Vector3 :
var tmp: float = v.z
v.z = v.y
v.y = tmp
return v

View File

@ -1 +0,0 @@
uid://y6hg3gyagmjh

View File

@ -1,4 +0,0 @@
extends Node3D
func _ready() -> void:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)

View File

@ -1 +0,0 @@
uid://db5kuorgtnsmg

View File

@ -1,32 +0,0 @@
[gd_scene load_steps=4 format=3 uid="uid://b2ogo643mvror"]
[ext_resource type="Script" uid="uid://db5kuorgtnsmg" path="res://src/scenes/player/player.gd" id="1_ytbry"]
[ext_resource type="Script" uid="uid://fhu1ep8ym4ch" path="res://src/scenes/player/player_movement.gd" id="2_300um"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_4kq8i"]
radius = 0.4
[node name="PlayerController" type="Node3D"]
script = ExtResource("1_ytbry")
[node name="MovementController" type="CharacterBody3D" parent="."]
transform = Transform3D(0.999941, 0, 0.0108906, 0, 1, 0, -0.0108906, 0, 0.999941, 0, 0, 0)
script = ExtResource("2_300um")
[node name="CollisionShape3D" type="CollisionShape3D" parent="MovementController"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.988022, 0)
shape = SubResource("CapsuleShape3D_4kq8i")
[node name="H-Rotation" type="Node3D" parent="MovementController"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.45618, 0)
[node name="CameraMount" type="Node3D" parent="MovementController/H-Rotation"]
transform = Transform3D(1.00035, 0, 0, 0, 1.00004, 0, -9.31323e-10, 0, 0.999999, 0, 0, 0)
[node name="Camera3D" type="Camera3D" parent="MovementController/H-Rotation/CameraMount"]
current = true
near = 0.01
[node name="RayCast3D" type="RayCast3D" parent="MovementController/H-Rotation/CameraMount/Camera3D"]
transform = Transform3D(0.999912, -1.77636e-15, -4.54747e-13, -1.77636e-15, 0.99991, -2.32831e-10, 0, 0, 0.999932, 0, 0, 0)
target_position = Vector3(0, 0, -30)

View File

@ -19,6 +19,8 @@ var is_connected_to_server = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
set_multiplayer_authority(multiplayer.get_unique_id())
# -- We need to get the position of the controller node on the server
camera_mount.global_transform = camera_mount_point.global_transform
camera_gt_prev = camera_mount.global_transform
camera_gt_cur = camera_mount.global_transform
@ -81,8 +83,8 @@ func _physics_process(delta: float) -> void:
func _process(delta: float) -> void:
# -- TODO: Rewrite it
if not is_connected_to_server:
var map_controller: MapController = find_parent("Map")
#if not is_connected_to_server:
#var map_controller: MapController = find_parent("Map")
if update_camera:
update_camera_transform()
update_camera = false

View File

@ -8,8 +8,7 @@
script = ExtResource("1_v31xn")
[node name="CameraMount" parent="." instance=ExtResource("2_csswn")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.80384, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.47638, -0.25714)
camera_name = "PlayerCamera"
input_camera = true
[node name="Character" parent="." instance=ExtResource("1_1fx4c")]

View File

@ -1,37 +0,0 @@
extends CharacterBody3D
const SPEED = 8.0
const JUMP_VELOCITY = 7
var camera_sens: float = 0.005
@onready var h_rotation: Node3D = $"H-Rotation"
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
var look_dir = event.relative * 1
rotation.y -= look_dir.x * camera_sens * 1.0
h_rotation.rotation.x = clamp(
h_rotation.rotation.x - look_dir.y * camera_sens * 1.0, -1.5, 1.5
)
func _physics_process(delta: float) -> void:
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
else:
# Handle jump.
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = JUMP_VELOCITY
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir := Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()

View File

@ -1 +0,0 @@
uid://fhu1ep8ym4ch

View File

@ -1,53 +0,0 @@
@tool
class_name ShootingModifier
extends SkeletonModifier3D
@export var look_raycast: RayCast3D
@export var aim_raycast: RayCast3D
@export_enum(" ") var bone: String
@export var shooting: bool = false
func _validate_property(property: Dictionary) -> void:
if property.name == "bone":
var skeleton: Skeleton3D = get_skeleton()
if skeleton:
property.hint = PROPERTY_HINT_ENUM
property.hint_string = skeleton.get_concatenated_bone_names()
func _process_modification() -> void:
var skeleton: Skeleton3D = get_skeleton()
if !skeleton:
return
var bone_idx: int = skeleton.find_bone(bone)
if bone_idx == -1:
return
var target_position = look_raycast.get_collision_point() if look_raycast.is_colliding() else look_raycast.global_transform.origin + - look_raycast.global_transform.basis.z * 30
var target_position_local = to_local(target_position)
#aim_raycast.= target_position
var bone_pose = skeleton.get_bone_global_pose(bone_idx)
#print(new_basis)
#skeleton.set_bone_global_pose(bone_idx, Transform3D(bone_pose.basis, bone_pose.origin + Vector3(0, 0, 1)))
var gun_position = aim_raycast.global_transform.origin
var gun_direction = (target_position - gun_position).normalized()
if shooting:
var new_pose = bone_pose.looking_at(target_position_local, Vector3.FORWARD, true)
var new_basis: Basis
new_basis.y = new_pose.basis.z
#new_basis.y.y = -new_basis.y.y
new_basis.z = new_pose.basis.x
new_basis.x = new_pose.basis.y
new_pose.basis = new_basis
skeleton.set_bone_global_pose(bone_idx, new_pose)
func z_and_y_inverse(v : Vector3) -> Vector3 :
var tmp: float = v.x
v.x = v.y
v.y = tmp
return v

View File

@ -1 +0,0 @@
uid://bbnh6vbh5cvtq

View File

@ -1,15 +0,0 @@
extends Node3D
@export var movement_controller: CharacterBody3D
@onready var skeleton: Skeleton3D = $Model/Armature/Skeleton3D
# Called when the node enters the scene tree for the first time.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta: float) -> void:
global_position = movement_controller.global_position
# -- Get the head rotation on x
# -- Rotate the body on x
var bone_idx: int = skeleton.find_bone("mixamorig_Head")
if bone_idx == -1:
return
#global_rotation.y = head_pose.y
pass

View File

@ -1 +0,0 @@
uid://tf0b0xiedgvx