diff --git a/weltenauge/01_core/systems/network_manager.gd b/weltenauge/01_core/systems/network_manager.gd index 8f1f74a..992d699 100644 --- a/weltenauge/01_core/systems/network_manager.gd +++ b/weltenauge/01_core/systems/network_manager.gd @@ -8,8 +8,8 @@ var local_camera: Camera3D = null # Mapping der Areas var area_paths = { - "keuwin_grasland": "res://05_worlds/area/outdoor/grass/keuwin_grasland.tscn", - "ahnenhalle": "res://05_worlds/area/planes/fugue/halle_der_ahnen.tscn" + "keuwin_grasland": "res://05_worlds/areas/outdoor/grass/keuwin_grasland.tscn", + "ahnenhalle": "res://05_worlds/areas/planes/fugue/halle_der_ahnen.tscn" } # Server-seitiges Tracking: peer_id -> SubViewportContainer @@ -37,9 +37,9 @@ func join_game(ip: String, username: String, password: String): peer.create_client(ip, PORT) multiplayer.multiplayer_peer = peer - func _on_player_connected(id): print("Player connected with id:", id) + player_worlds[id] = null # SubViewport wird erst connected, wenn area geladen wurde. cl_show_characters.rpc_id(id, []) @@ -62,7 +62,7 @@ func _on_player_disconnected(id): func change_player_area(id: int, area_key: String): if not multiplayer.is_server(): return - print("Server is loading ", area_key) + print("Server change_player_area: Server is loading ", area_key) var path = area_paths[area_key] var container_name = area_key + "_container" @@ -167,7 +167,7 @@ func setup_client_camera(node): func _spawn_player_in_world(id, spawn_target_node): - var player_scene = load("res://systems/player/player.tscn") + var player_scene = load("res://04_entities/player/player.tscn") var player = player_scene.instantiate() player.name = str(id) player.get_node("PlayerNameLabel").text = str(id) @@ -208,24 +208,24 @@ func cl_assign_camera_target(node_name: String): @rpc("any_peer", "call_remote", "reliable") func srv_handle_area_change_request(area_key: String): + print("Server received srv_handle_area_change_request") var id = multiplayer.get_remote_sender_id() - if not player_worlds.has(id): return + if not player_worlds.has(id): + print("ERROR: Server srv_handle_area_change_request could not be handled because client peer_id is not in player_worlds list") + return print("Server: Player ", id, " requests area change to ", area_key) - # 1. Alten Spieler finden und entfernen + # 1. Alten Spieler finden und entfernen falls vorhanden var old_container = player_worlds[id] - print("container name=", old_container) - var old_viewport = old_container.get_child(0) - print("Viewport name=", old_viewport) - var player_node = old_viewport.get_child(0).get_node("SpawnPoints").get_node(str(id)) + if old_container: + print("container name=", old_container) + var old_viewport = old_container.get_child(0) + print("Viewport name=", old_viewport) + var player_node = old_viewport.get_child(0).get_node("SpawnPoints").get_node(str(id)) - if player_node: - player_node.queue_free() - - else: - print("Old viewport:", old_viewport) - print("Player for erasing not found:", id) + if player_node: + player_node.queue_free() # 2. Bestehende Funktion für den Wechsel aufrufen change_player_area(id, area_key) diff --git a/weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend b/weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend new file mode 100644 index 0000000..1e15dd4 --- /dev/null +++ b/weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8de0d024757bc57b754e13039879224f481e59eb50af5c8d7b6c6e5061fceaf1 +size 101158 diff --git a/weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend.import b/weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend.import new file mode 100644 index 0000000..9a7d6c1 --- /dev/null +++ b/weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend.import @@ -0,0 +1,60 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dtaaopjfwugox" +path="res://.godot/imported/Haus1.blend-530b60ce89025181cf1629ef24bf4a52.scn" + +[deps] + +source_file="res://02_library/meshes/architecture/prototpye/Haus1.blend" +dest_files=["res://.godot/imported/Haus1.blend-530b60ce89025181cf1629ef24bf4a52.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={} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/weltenauge/04_entities/ui/windows/character_select/character_select.gd b/weltenauge/04_entities/ui/windows/character_select/character_select.gd index e4d94e9..bf8eabf 100644 --- a/weltenauge/04_entities/ui/windows/character_select/character_select.gd +++ b/weltenauge/04_entities/ui/windows/character_select/character_select.gd @@ -29,3 +29,10 @@ func _on_character_item_list_item_activated(index: int) -> void: print("Doubleclick for index=", index) var item = character_item_list.get_selected_items()[0] print("=>",character_item_list.get_item_text(item)) + + #for name in character_item_list.get_selected_items(): + # #character_item_list.add_item(character.name) + # print(name) + print("sending to server: srv_handle_area_change_request") + NetworkManager.srv_handle_area_change_request.rpc_id(1, 'keuwin_grasland') + hide() diff --git a/weltenauge/05_worlds/areas/outdoor/grass/keuwin_grasland.tscn b/weltenauge/05_worlds/areas/outdoor/grass/keuwin_grasland.tscn index 1f9dbe2..e5ff33f 100644 --- a/weltenauge/05_worlds/areas/outdoor/grass/keuwin_grasland.tscn +++ b/weltenauge/05_worlds/areas/outdoor/grass/keuwin_grasland.tscn @@ -1,6 +1,7 @@ [gd_scene format=3 uid="uid://h5qt2pcidh8x"] [ext_resource type="PackedScene" uid="uid://coq1j1cdrvqyn" path="res://05_worlds/prefabs/portal/portal.tscn" id="1_1yg6u"] +[ext_resource type="PackedScene" uid="uid://dtaaopjfwugox" path="res://02_library/meshes/architecture/prototpye/Haus1.blend" id="2_37qpy"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_d3jw7"] @@ -59,3 +60,6 @@ target_area_key = "ahnenhalle" [node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="." unique_id=58641401] _spawnable_scenes = PackedStringArray("uid://bjurf8vfd1fg8") spawn_path = NodePath("../SpawnPoints") + +[node name="Haus1" parent="." unique_id=1112241800 instance=ExtResource("2_37qpy")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2224345, 0, 6.3797016) diff --git a/workbench/godot_testprojects/3d-import-test/blender_manual.tres b/workbench/godot_testprojects/3d-import-test/blender_manual.tres index 8214643..6684268 100644 --- a/workbench/godot_testprojects/3d-import-test/blender_manual.tres +++ b/workbench/godot_testprojects/3d-import-test/blender_manual.tres @@ -1,4 +1,4 @@ -[gd_resource type="ArrayMesh" format=4 uid="uid://8xlhk4wyhfhb"] +[gd_resource type="ArrayMesh" format=4 uid="uid://2lhp3qgi4k6g"] [ext_resource type="Texture2D" uid="uid://cd2rwoon87c3r" path="res://blender_manual_export/quaternius_naturepack_commontree_1_Bark_NormalTree.png" id="1_i33fb"] [ext_resource type="Texture2D" uid="uid://btqohxc787pms" path="res://blender_manual_export/quaternius_naturepack_commontree_1_Bark_NormalTree_Normal.png" id="2_buj6b"] diff --git a/workbench/godot_testprojects/3d-import-test/quaternius_tree.tres b/workbench/godot_testprojects/3d-import-test/quaternius_tree.tres index 7472e07..c8bcd62 100644 --- a/workbench/godot_testprojects/3d-import-test/quaternius_tree.tres +++ b/workbench/godot_testprojects/3d-import-test/quaternius_tree.tres @@ -1,4 +1,4 @@ -[gd_resource type="ArrayMesh" format=4 uid="uid://cfvrt8vkn1e7b"] +[gd_resource type="ArrayMesh" format=4 uid="uid://bfm6gvugkbxj5"] [ext_resource type="Texture2D" uid="uid://bms40ms6ijpn7" path="res://quaternius_direct/Bark_NormalTree.png" id="1_ofe58"] [ext_resource type="Texture2D" uid="uid://cchft2gjnqdu1" path="res://quaternius_direct/Bark_NormalTree_Normal.png" id="2_wrip3"] diff --git a/workbench/prototyping/house/Haus1.blend b/workbench/prototyping/house/Haus1.blend new file mode 100644 index 0000000..69d8eea --- /dev/null +++ b/workbench/prototyping/house/Haus1.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891691918c3993c387fb3405bc3c3f659834a56016ace3d836bf399b4f0fba8d +size 102166 diff --git a/workbench/prototyping/house/Haus1.blend1 b/workbench/prototyping/house/Haus1.blend1 new file mode 100644 index 0000000..43752f1 Binary files /dev/null and b/workbench/prototyping/house/Haus1.blend1 differ