diff --git a/assets/core/networking/scripts/NetworkManager.gd b/assets/core/networking/scripts/NetworkManager.gd index f6f7db9..ecd8810 100644 --- a/assets/core/networking/scripts/NetworkManager.gd +++ b/assets/core/networking/scripts/NetworkManager.gd @@ -375,21 +375,25 @@ func update_node_and_send(node_id: String): if not pending_updates.has(node_id): return # No updates for this node - var target_node = node_map.get(node_id) - if not target_node: - return # Node not found + var updates_for_node = pending_updates[node_id] + + if not node_map.has(node_id): + # Handle cases where the node might not exist yet (e.g., during node creation) + return # Node not found (might be created later) + + var target_node = node_map[node_id] # Apply updates to the target node's properties - for key in pending_updates[node_id].keys(): - target_node[key] = pending_updates[node_id][key] + for key in updates_for_node.keys(): + target_node.set(key, updates_for_node[key]) + + # Clear updates for this node after applying them + pending_updates.erase(node_id) # Send an update packet immediately for reliability - var packet_data = {"message": "property_update", "updates": {node_id: pending_updates[node_id]}} + var packet_data = {"message": "property_update", "updates": {node_id: updates_for_node}} send_p2p_packet(0, packet_data) - # Clear updates for this node after sending them - pending_updates.erase(node_id) - func send_pending_updates(): if pending_updates.size() == 0: