diff --git a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll new file mode 100644 index 0000000..c80cff6 Binary files /dev/null and b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll differ diff --git a/assets/core/player-controller/scenes/player.tscn b/assets/core/player-controller/scenes/player.tscn index b24b739..d038374 100644 --- a/assets/core/player-controller/scenes/player.tscn +++ b/assets/core/player-controller/scenes/player.tscn @@ -13,6 +13,7 @@ height = 1.5 [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qlkab"] radius = 0.35 +height = 2.25001 [sub_resource type="SphereMesh" id="SphereMesh_vu2l8"] radius = 0.35 @@ -24,7 +25,7 @@ shader = ExtResource("3_rakxt") [sub_resource type="ShaderMaterial" id="ShaderMaterial_0n7pd"] shader = ExtResource("3_rakxt") -[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "neck", "player_avatar_face", "body", "head", "player_hud")] +[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "neck", "player_avatar_face", "body", "head", "player_hud", "flashlight")] collision_mask = 242 script = ExtResource("1_bv7t4") camera = NodePath("Neck/Camera3D") @@ -33,6 +34,7 @@ player_avatar_face = NodePath("Neck/Camera3D/PlayerAvatarFace") body = NodePath("Body") head = NodePath("Neck/Head") player_hud = NodePath("PlayerHUD") +flashlight = NodePath("Neck/Camera3D/Flashlight") [node name="PlayerTag" type="Label3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.26654, 0) @@ -46,6 +48,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) mesh = SubResource("CapsuleMesh_v7b3h") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.125501, 0) shape = SubResource("CapsuleShape3D_qlkab") [node name="Neck" type="Node3D" parent="."] @@ -66,6 +69,9 @@ shaded = true double_sided = false texture = ExtResource("2_omgn1") +[node name="Flashlight" type="SpotLight3D" parent="Neck/Camera3D"] +spot_range = 9.0 + [node name="Head" type="MeshInstance3D" parent="Neck"] mesh = SubResource("SphereMesh_vu2l8") diff --git a/assets/core/player-controller/scripts/player.gd b/assets/core/player-controller/scripts/player.gd index 78dbba9..f9ca82b 100644 --- a/assets/core/player-controller/scripts/player.gd +++ b/assets/core/player-controller/scripts/player.gd @@ -11,35 +11,32 @@ var steam_id: int = 0 @export_category("Player") @export_range(1, 35, 1) var speed: float = 5.0 @export_range(10, 400, 1) var acceleration: float = 100.0 - @export_range(0.1, 3.0, 0.1) var jump_height: float = 1.0 @export_range(0.1, 3.0, 0.1, "or_greater") var camera_sens: float = 1.0 @export_range(0.1, 3.0, 0.1, "or_greater") var joystick_camera_sens_multiplier: float = 5.0 +@export_category("Node References") @export var camera: Camera3D @export var neck: Node3D @export var player_avatar_face: Sprite3D @export var body: MeshInstance3D @export var head: MeshInstance3D @export var player_hud: CanvasLayer - +@export var flashlight: SpotLight3D var jumping: bool = false var is_using_joystick: bool = false var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") - var move_dir: Vector2 # Input direction for movement var look_dir: Vector2 # Input direction for look/aim var walk_vel: Vector3 # Walking velocity var grav_vel: Vector3 # Gravity velocity var jump_vel: Vector3 # Jumping velocity - var current_ship: Ship - var previous_global_position: Vector3 var previous_global_rotation: Vector3 var previous_head_vert_rotation: Vector3 - var neck_rotation_sync: Vector3 +var light_state: bool func _ready() -> void: @@ -77,8 +74,11 @@ func _input(event): if Input.is_action_just_pressed("jump") and !is_piloting: jumping = true + + if Input.is_action_just_released("toggle_flashlight"): + handle_flashlight(event) + - func _physics_process(delta: float) -> void: if !is_network_authority: return if is_piloting and current_ship != null: @@ -110,17 +110,17 @@ func _process(delta: float) -> void: NetworkManager.sync_property_to_all(network_uuid, "neck_rotation_sync", neck_rotation_sync) previous_global_rotation = neck.rotation - + func capture_mouse() -> void: if !is_network_authority: return Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - + func release_mouse() -> void: if !is_network_authority: return Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - + func _rotate_camera(sens_mod: float = 1.0) -> void: if !is_network_authority: return var camera_sens_final = camera_sens @@ -131,7 +131,7 @@ func _rotate_camera(sens_mod: float = 1.0) -> void: neck.rotation.x = clamp(neck.rotation.x - look_dir.y * camera_sens_final * sens_mod, -1.5, 1.5) neck_rotation_sync = neck.rotation - + func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void: var joypad_dir: Vector2 = Input.get_vector("look_left","look_right","look_up","look_down") if joypad_dir.length() > 0: @@ -139,7 +139,7 @@ func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void _rotate_camera(sens_mod) look_dir = Vector2.ZERO - + func walk(delta: float) -> Vector3: if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: move_dir = Input.get_vector("move_left", "move_right", "move_forwards", "move_backwards") @@ -148,12 +148,12 @@ func walk(delta: float) -> Vector3: walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta) return walk_vel - + func _gravity(delta: float) -> Vector3: grav_vel = Vector3.ZERO if is_on_floor() else grav_vel.move_toward(Vector3(0, velocity.y - gravity, 0), gravity * delta) return grav_vel - + func _jump(delta: float) -> Vector3: if jumping: if is_on_floor(): jump_vel = Vector3(0, sqrt(4 * jump_height * gravity), 0) @@ -162,14 +162,25 @@ func _jump(delta: float) -> Vector3: jump_vel = Vector3.ZERO if is_on_floor() else jump_vel.move_toward(Vector3.ZERO, gravity * delta) return jump_vel - + +func handle_flashlight(event): + if !flashlight.visible: + flashlight.show() + light_state = true + NetworkManager.sync_property_to_all(network_uuid, "light_state", light_state) + elif flashlight.visible: + flashlight.hide() + light_state = false + NetworkManager.sync_property_to_all(network_uuid, "light_state", light_state) + + func player_entered_ship(ship_global_position: Vector3, ship: Ship): if !is_network_authority: return current_ship = ship print(ship.ship_id) print(global_position) - + func player_exited_ship(ship_global_position: Vector3, ship: Ship): if !is_network_authority: return current_ship = null diff --git a/assets/core/ships/ship_script.gd b/assets/core/ships/ship_script.gd index 537f354..3add067 100644 --- a/assets/core/ships/ship_script.gd +++ b/assets/core/ships/ship_script.gd @@ -121,8 +121,8 @@ func send_network_update(): elif !NetworkManager.is_host and ship_is_piloted and piloting_player.steam_id == NetworkManager.steam_id: # Client is piloting, send updates to the host - NetworkManager.sync_property_to_all_except_host(network_uuid, "global_position", predicted_position) - NetworkManager.sync_property_to_all_except_host(network_uuid, "global_rotation", predicted_rotation) + NetworkManager.sync_property_to_all(network_uuid, "global_position", predicted_position) + NetworkManager.sync_property_to_all(network_uuid, "global_rotation", predicted_rotation) func receive_global_position_update(value: Vector3): target_position = value diff --git a/godot-jolt/windows/~godot-jolt_windows-x64_editor.dll b/godot-jolt/windows/~godot-jolt_windows-x64_editor.dll new file mode 100644 index 0000000..c05d288 Binary files /dev/null and b/godot-jolt/windows/~godot-jolt_windows-x64_editor.dll differ diff --git a/project.godot b/project.godot index 3e986dd..da3d212 100644 --- a/project.godot +++ b/project.godot @@ -135,6 +135,12 @@ interact={ , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) ] } +toggle_flashlight={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":true,"script":null) +] +} [layer_names]