Browse Source

Many fixes to networking, demo should work now

Juan Linietsky 9 years ago
parent
commit
2fa693273c
2 changed files with 14 additions and 4 deletions
  1. 2 2
      modules/enet/networked_multiplayer_enet.cpp
  2. 12 2
      scene/main/scene_main_loop.cpp

+ 2 - 2
modules/enet/networked_multiplayer_enet.cpp

@@ -285,8 +285,8 @@ void NetworkedMultiplayerENet::poll(){
 							incoming_packets.push_back(packet);
 						} else {
 							//to someone else, specifically
-							ERR_CONTINUE(!peer_map.has(source));
-							enet_peer_send(peer_map[source],0,packet.packet);
+							ERR_CONTINUE(!peer_map.has(target));
+							enet_peer_send(peer_map[target],0,packet.packet);
 						}
 					} else {
 

+ 12 - 2
scene/main/scene_main_loop.cpp

@@ -1760,6 +1760,17 @@ void SceneTree::_rpc(Node* p_from,int p_to,bool p_unreliable,bool p_set,const St
 		ERR_FAIL();
 	}
 
+	if (p_to!=0 && !connected_peers.has(ABS(p_to))) {
+		if (p_to==get_network_unique_id()) {
+			ERR_EXPLAIN("Attempt to remote call/set yourself! unique ID: "+itos(get_network_unique_id()));
+		} else {
+			ERR_EXPLAIN("Attempt to remote call unexisting ID: "+itos(p_to));
+
+		}
+
+		ERR_FAIL();
+	}
+
 	NodePath from_path = p_from->get_path();
 	ERR_FAIL_COND(from_path.is_empty());
 
@@ -1816,7 +1827,6 @@ void SceneTree::_rpc(Node* p_from,int p_to,bool p_unreliable,bool p_set,const St
 			}
 
 			has_all_peers=false;
-			break;
 		}
 	}
 
@@ -1990,10 +2000,10 @@ void SceneTree::_network_process_packet(int p_from, const Array& p_packet) {
 			message.resize(2);
 			message[0]=NETWORK_COMMAND_CONFIRM_PATH;
 			message[1]=path;
-
 			network_peer->put_var(message);
 		} break;
 		case NETWORK_COMMAND_CONFIRM_PATH: {
+
 			ERR_FAIL_COND(p_packet.size()!=2);
 			NodePath path = p_packet[1];