From d5ff05ae75fb207e2d823caa50f93dd8fba8b3b1 Mon Sep 17 00:00:00 2001 From: gaudipern Date: Fri, 9 Jan 2026 06:53:37 -0500 Subject: [PATCH] Work on exports and some fixes to sound and multiplayer functions --- export_presets.cfg | 70 ++++++++++++++++++++++++++++++ models/pawns/van_reily.gltf | 1 + models/pawns/van_reily.gltf.import | 42 ++++++++++++++++++ scenes/multiplayer_setup.tscn | 11 ++++- scenes/title_screen.tscn | 1 + scripts/autos/game.gd | 9 ++-- scripts/autos/multiplayer.gd | 22 ++++++++-- scripts/multiplayer_setup.gd | 3 +- scripts/net_test.gd | 1 + scripts/title_screen.gd | 2 +- templates/pawn_controller.tscn | 5 ++- 11 files changed, 156 insertions(+), 11 deletions(-) create mode 100644 export_presets.cfg create mode 100644 models/pawns/van_reily.gltf create mode 100644 models/pawns/van_reily.gltf.import diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..3fd0d07 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,70 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../exports/net-gunner/windows/Net Gunner.exe" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" +dotnet/include_scripts_content=false +dotnet/include_debug_symbols=true +dotnet/embed_build_outputs=false diff --git a/models/pawns/van_reily.gltf b/models/pawns/van_reily.gltf new file mode 100644 index 0000000..787f4fc --- /dev/null +++ b/models/pawns/van_reily.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 5.0.7 glTF exporter"},"scenes":[{"nodes":[2],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[0,-0.76,0.12],"name":"Body","mesh":0},{"rotation":[-3.759364481230397e-7,-0.6593454391799991,-0.7518401371516981,3.2968774923770717e-7],"name":"Head","mesh":1},{"translation":[0,0.76,-0.12],"name":"Pawn","children":[0,1]}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":1440,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1440,"byteLength":1440,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":2880,"byteLength":960,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":3840,"byteLength":288,"target":34963},{"buffer":0,"byteOffset":4128,"byteLength":192,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":4320,"byteLength":192,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":4512,"byteLength":128,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":4640,"byteLength":36,"target":34963}],"buffers":[{"byteLength":4676,"uri":"data:application/octet-stream;base64,4ODvPQAAAADg4O89apovPQAAAAAK1yM+AAAAAAAAAAAAAAAAapovPQAAAAAK1yM+4ODvPQAAAADg4O894OBvPZqZGT/g4G89apqvPJqZGT8K16M9apqvPJqZGT8K16M94OBvPZqZGT/g4G89CtejopqZGT8K16OiCtcjPgAAAABqmi894ODvPQAAAADg4O89AAAAAAAAAAAAAAAA4ODvPQAAAADg4O89CtcjPgAAAABqmi89CtejPZqZGT9qmq884OBvPZqZGT/g4G894OBvPZqZGT/g4G89CtejPZqZGT9qmq88CtejopqZGT8K16OiCtcjPgAAAABqmi+9CtcjPgAAAABqmi89AAAAAAAAAAAAAAAACtcjPgAAAABqmi89CtcjPgAAAABqmi+9CtejPZqZGT9qmq+8CtejPZqZGT9qmq88CtejPZqZGT9qmq88CtejPZqZGT9qmq+8CtejopqZGT8K16Oi4ODvPQAAAADg4O+9CtcjPgAAAABqmi+9AAAAAAAAAAAAAAAACtcjPgAAAABqmi+94ODvPQAAAADg4O+94OBvPZqZGT/g4G+9CtejPZqZGT9qmq+8CtejPZqZGT9qmq+84OBvPZqZGT/g4G+9CtejopqZGT8K16OiapovPQAAAAAK1yO+4ODvPQAAAADg4O+9AAAAAAAAAAAAAAAA4ODvPQAAAADg4O+9apovPQAAAAAK1yO+apqvPJqZGT8K16O94OBvPZqZGT/g4G+94OBvPZqZGT/g4G+9apqvPJqZGT8K16O9CtejopqZGT8K16OiapovvQAAAAAK1yO+apovPQAAAAAK1yO+AAAAAAAAAAAAAAAAapovPQAAAAAK1yO+apovvQAAAAAK1yO+apqvvJqZGT8K16O9apqvPJqZGT8K16O9apqvPJqZGT8K16O9apqvvJqZGT8K16O9CtejopqZGT8K16Oi4ODvvQAAAADg4O+9apovvQAAAAAK1yO+AAAAAAAAAAAAAAAAapovvQAAAAAK1yO+4ODvvQAAAADg4O+94OBvvZqZGT/g4G+9apqvvJqZGT8K16O9apqvvJqZGT8K16O94OBvvZqZGT/g4G+9CtejopqZGT8K16OiCtcjvgAAAABqmi+94ODvvQAAAADg4O+9AAAAAAAAAAAAAAAA4ODvvQAAAADg4O+9CtcjvgAAAABqmi+9CtejvZqZGT9qmq+84OBvvZqZGT/g4G+94OBvvZqZGT/g4G+9CtejvZqZGT9qmq+8CtejopqZGT8K16OiCtcjvgAAAABqmi89CtcjvgAAAABqmi+9AAAAAAAAAAAAAAAACtcjvgAAAABqmi+9CtcjvgAAAABqmi89CtejvZqZGT9qmq88CtejvZqZGT9qmq+8CtejvZqZGT9qmq+8CtejvZqZGT9qmq88CtejopqZGT8K16Oi4ODvvQAAAADg4O89CtcjvgAAAABqmi89AAAAAAAAAAAAAAAACtcjvgAAAABqmi894ODvvQAAAADg4O894OBvvZqZGT/g4G89CtejvZqZGT9qmq88CtejvZqZGT9qmq884OBvvZqZGT/g4G89CtejopqZGT8K16OiapovvQAAAAAK1yM+4ODvvQAAAADg4O89AAAAAAAAAAAAAAAA4ODvvQAAAADg4O89apovvQAAAAAK1yM+apqvvJqZGT8K16M94OBvvZqZGT/g4G894OBvvZqZGT/g4G89apqvvJqZGT8K16M9CtejopqZGT8K16OiapovPQAAAAAK1yM+apovvQAAAAAK1yM+AAAAAAAAAAAAAAAAapovvQAAAAAK1yM+apovPQAAAAAK1yM+apqvPJqZGT8K16M9apqvvJqZGT8K16M9apqvvJqZGT8K16M9apqvPJqZGT8K16M9CtejopqZGT8K16OiAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAHcH9Pu1VBz75wVs/HcH9Pu1VBz75wVs/HcH9Pu1VBz75wVs/HcH9Pu1VBz75wVs/AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAA+cFbP+1VBz4dwf0++cFbP+1VBz4dwf0++cFbP+1VBz4dwf0++cFbP+1VBz4dwf0+AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAHcF9P+1VBz4AAAAAHcF9P+1VBz4AAAAAHcF9P+1VBz4AAAAAHcF9P+1VBz4AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAA+cFbP+1VBz4dwf2++cFbP+1VBz4dwf2++cFbP+1VBz4dwf2++cFbP+1VBz4dwf2+AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAHcH9Pu1VBz75wVu/HcH9Pu1VBz75wVu/HcH9Pu1VBz75wVu/HcH9Pu1VBz75wVu/AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAi8HsJe1VBz4dwX2/i8HsJe1VBz4dwX2/i8HsJe1VBz4dwX2/i8HsJe1VBz4dwX2/AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAHcH9vu1VBz75wVu/HcH9vu1VBz75wVu/HcH9vu1VBz75wVu/HcH9vu1VBz75wVu/AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAA+cFbv+1VBz4dwf2++cFbv+1VBz4dwf2++cFbv+1VBz4dwf2++cFbv+1VBz4dwf2+AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAHcF9v+1VBz6LwWylHcF9v+1VBz6LwWylHcF9v+1VBz6LwWylHcF9v+1VBz6LwWylAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAA+cFbv+1VBz4dwf0++cFbv+1VBz4dwf0++cFbv+1VBz4dwf0++cFbv+1VBz4dwf0+AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAHcH9vu1VBz75wVs/HcH9vu1VBz75wVs/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"}],"accessors":[{"bufferView":0,"componentType":5126,"count":120,"max":[0.1599999964237213,0.6000000238418579,0.1599999964237213],"min":[-0.1599999964237213,0,-0.1599999964237213],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":120,"max":[0.991227924823761,1,0.991227924823761],"min":[-0.991227924823761,-1,-0.991227924823761],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":120,"max":[0.0647047758102417,0.234375],"min":[0,0],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":144,"max":[119],"min":[0],"type":"SCALAR"},{"bufferView":4,"componentType":5126,"count":16,"max":[0.1599999964237213,0.35931557416915894,0.07999999821186066],"min":[-0.16000007092952728,-7.999999951380232e-8,-0.1599999964237213],"type":"VEC3"},{"bufferView":5,"componentType":5126,"count":16,"max":[0.9135243892669678,0.5383808612823486,0.8427016139030457],"min":[-0.9135242104530334,-1,-0.9995779991149902],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":16,"max":[0.125,0.125],"min":[0,0],"type":"VEC2"},{"bufferView":7,"componentType":5123,"count":18,"max":[15],"min":[0],"type":"SCALAR"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true},{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":1}]}]} \ No newline at end of file diff --git a/models/pawns/van_reily.gltf.import b/models/pawns/van_reily.gltf.import new file mode 100644 index 0000000..8fdb544 --- /dev/null +++ b/models/pawns/van_reily.gltf.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bqwpra5d1faxw" +path="res://.godot/imported/van_reily.gltf-2817ab131dfda784fe3b5bb0047959d3.scn" + +[deps] + +source_file="res://models/pawns/van_reily.gltf" +dest_files=["res://.godot/imported/van_reily.gltf-2817ab131dfda784fe3b5bb0047959d3.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/scenes/multiplayer_setup.tscn b/scenes/multiplayer_setup.tscn index 50e5355..c2efe72 100644 --- a/scenes/multiplayer_setup.tscn +++ b/scenes/multiplayer_setup.tscn @@ -89,6 +89,12 @@ layout_mode = 2 text = "WAITING FOR OPPONENT" horizontal_alignment = 1 +[node name="IPLabel" type="Label" parent="Setup/Panel/Host Waiting"] +unique_name_in_owner = true +layout_mode = 2 +text = "WAITING FOR OPPONENT" +horizontal_alignment = 1 + [node name="PanelContainer" type="PanelContainer" parent="Setup/Panel/Host Waiting"] layout_mode = 2 @@ -139,9 +145,10 @@ layout_mode = 2 [node name="Label" type="Label" parent="Setup/Panel/Joining/HBoxContainer2"] layout_mode = 2 -text = "MATCH CODE" +text = "IP ADDRESS" -[node name="TextEdit" type="TextEdit" parent="Setup/Panel/Joining/HBoxContainer2"] +[node name="IPEdit" type="TextEdit" parent="Setup/Panel/Joining/HBoxContainer2"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 diff --git a/scenes/title_screen.tscn b/scenes/title_screen.tscn index e630121..356b27d 100644 --- a/scenes/title_screen.tscn +++ b/scenes/title_screen.tscn @@ -281,6 +281,7 @@ offset_bottom = 648.0 [node name="Music" type="AudioStreamPlayer" parent="."] stream = ExtResource("4_mykxm") +volume_db = -18.606 autoplay = true [node name="SelectSound" type="AudioStreamPlayer" parent="."] diff --git a/scripts/autos/game.gd b/scripts/autos/game.gd index e2977b1..4a8eb94 100644 --- a/scripts/autos/game.gd +++ b/scripts/autos/game.gd @@ -49,14 +49,17 @@ func start_level(pawns : Dictionary[int, PawnBaseData]) -> void: level_synced[1] = true switch_scene(vs_man_level) -func switch_scene(packed_scene : PackedScene) -> void: +func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void: var blinder = blinder_template.instantiate() as TextureRect var tween = create_tween() blinder.self_modulate.a = 0 add_child(blinder) tween.tween_property(blinder, "self_modulate:a", 1, .15) - var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner - tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(),true)) + if spawn: + var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner + tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(),true)) + else: + tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene)) tween.tween_property(blinder, "self_modulate:a", 0, .15) tween.tween_callback(blinder.queue_free) diff --git a/scripts/autos/multiplayer.gd b/scripts/autos/multiplayer.gd index f389fe3..567743c 100644 --- a/scripts/autos/multiplayer.gd +++ b/scripts/autos/multiplayer.gd @@ -25,11 +25,12 @@ func become_host() -> void: multiplayer.peer_disconnected.connect(_remove_player_from_game) -func join_game(new_handle : String) -> Error: +func join_game(new_handle : String, ip : String = "") -> Error: print("Player 2 joining.") - + if ip == "": + ip = SERVER_IP var client_peer = ENetMultiplayerPeer.new() - var error = client_peer.create_client(SERVER_IP, SERVER_PORT) + var error = client_peer.create_client(ip, SERVER_PORT) multiplayer.multiplayer_peer = client_peer handle = new_handle id = multiplayer.get_unique_id() @@ -85,3 +86,18 @@ func receive_peer_handle(peer_id, peer_handle) -> void: @rpc("any_peer", "call_remote") func report_handle_to_peer(peer_id : int) -> void: rpc_id(peer_id, "receive_peer_handle", multiplayer.get_unique_id(), handle) + +func get_local_ip() -> String: + var ip_address = "" + # Get all local addresses as an Array + var addresses: PackedStringArray = IP.get_local_addresses() + + for address in addresses: + # Check if it is an IPv4 address and not a loopback or link-local address + if "." in address and not address.begins_with("127.") and not address.begins_with("169.254."): + # Filter for common private IP ranges (192.168.x.x, 10.x.x.x, 172.16-31.x.x) + if address.begins_with("192.168.") or address.begins_with("10.") or (address.begins_with("172.") and int(address.split(".")[1]) >= 16 and int(address.split(".")[1]) <= 31): + ip_address = address + break # Exit the loop once a valid local IP is found + + return ip_address diff --git a/scripts/multiplayer_setup.gd b/scripts/multiplayer_setup.gd index f8eb15a..433a34b 100644 --- a/scripts/multiplayer_setup.gd +++ b/scripts/multiplayer_setup.gd @@ -33,6 +33,7 @@ func _on_start_hosting_button_pressed() -> void: #Set fields %ParticipantsText.text = "[color=FFFF00]*%s (HOST)[/color]\n" % handle %"Host Waiting".visible = true + %IPLabel.text = Multiplayer.get_local_ip() Multiplayer.become_host() @@ -61,7 +62,7 @@ func _on_join_button_pressed() -> void: #Check for valid game #If found %Joining.visible = false - if await Multiplayer.join_game(handle): + if await Multiplayer.join_game(handle, %IPEdit.text): %"Host Waiting".visible = true %StartButton.visible = false diff --git a/scripts/net_test.gd b/scripts/net_test.gd index 2ca22f8..28459a6 100644 --- a/scripts/net_test.gd +++ b/scripts/net_test.gd @@ -2,6 +2,7 @@ extends MultiplayerSpawner func _ready() -> void: + print(Multiplayer.get_local_ip()) if Game.net_test: await get_tree().create_timer(0.25).timeout Multiplayer.join_game("123") diff --git a/scripts/title_screen.gd b/scripts/title_screen.gd index a51c1fb..ce4ac24 100644 --- a/scripts/title_screen.gd +++ b/scripts/title_screen.gd @@ -68,7 +68,7 @@ func _process(delta: float) -> void: switch_sound.play() switch_menu(wrapi(menu_choice + menu_dir, 0, len(menu_list))) if Input.is_action_just_pressed("ui_accept"): - Game.switch_scene(menu_list[menu_choice].scene) + Game.switch_scene(menu_list[menu_choice].scene, false) func switch_menu(new_choice : int) -> void: diff --git a/templates/pawn_controller.tscn b/templates/pawn_controller.tscn index 9cefc69..172e0b5 100644 --- a/templates/pawn_controller.tscn +++ b/templates/pawn_controller.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=34 format=3 uid="uid://c8xf3qawk5c6u"] +[gd_scene load_steps=35 format=3 uid="uid://c8xf3qawk5c6u"] [ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/pawn_controller.gd" id="1_h27ep"] [ext_resource type="Script" uid="uid://wye3mat5y5yg" path="res://scripts/pawn_body.gd" id="2_dn5ph"] @@ -20,6 +20,7 @@ [ext_resource type="AudioStream" uid="uid://cfq0pu0qxgb6u" path="res://audio/sounds/134688__otbtechno__bike-bell.wav" id="18_1x3g1"] [ext_resource type="Texture2D" uid="uid://dmnwtwu5v4voh" path="res://visuals/images/icons/detect mark.png" id="19_5822g"] [ext_resource type="AudioStream" uid="uid://cmnibhyxpag0a" path="res://audio/sounds/BeepBeep_high.wav" id="20_v7o58"] +[ext_resource type="PackedScene" uid="uid://bqwpra5d1faxw" path="res://models/pawns/van_reily.gltf" id="21_dn5ph"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y646j"] next_pass = ExtResource("4_8twd3") @@ -230,6 +231,8 @@ floor_snap_length = 1.0 script = ExtResource("1_h27ep") speed = 3.0 +[node name="blockbench_export" parent="." instance=ExtResource("21_dn5ph")] + [node name="PawnBody" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.425, 0) script = ExtResource("2_dn5ph")