From 3ee118754e621c4802de6f9bc3c40ee8df657c5a Mon Sep 17 00:00:00 2001
From: Florent Berthaut <florent.berthaut@univ-lille.fr>
Date: Thu, 31 Aug 2023 16:15:24 +0200
Subject: [PATCH] Fixed network

---
 core/IvmiScene.gd | 87 ++++++++++++++++++++++-------------------------
 1 file changed, 41 insertions(+), 46 deletions(-)

diff --git a/core/IvmiScene.gd b/core/IvmiScene.gd
index 89f3ea4..22ebc8e 100644
--- a/core/IvmiScene.gd
+++ b/core/IvmiScene.gd
@@ -73,6 +73,10 @@ var _is_2D : bool = true
 var _ivmi_node = load("res://addons/ivmi-builder/core/IvmiNode.gd")
 
 func _ready():
+	
+	
+	print("Creating IvmiScene")
+	
 	match _xr_mode :
 		XRMode.OpenXr :
 			_is_2D = false
@@ -109,15 +113,7 @@ func _ready():
 #				print("Error : Could not activate ScreenVR")
 			pass
 
-# TODO trying to fix resume error on quest, not working yet ...
-func _on_play_area_changed() :
-	get_viewport().use_xr = true
-
-
-func _init():
-
-	print("Creating IvmiScene")
-	
+	# PureData mode
 	if _pd_mode==PdMode.LIBPD :
 		var gdpd_dir = FileAccess
 		var exists = gdpd_dir.dir_exists("res://addons/gdpd")
@@ -169,29 +165,28 @@ func _init():
 
 	if _network_mode!=NetMode.None :
 		if _network_protocol==NetProto.WebRTC :
-
-			if OS.get_name()=="HTML5" :
-				#create client
-				_network_client = IvmiClient.new()
-				_network_client.connect("on_peers_ready",Callable(self,"_on_network_ready"))
-				add_child(_network_client)
-				#connect to server
-				_on_found_server(_server_ip, _server_port)
-			else :
-
-				#create client
-				_network_client = IvmiClient.new()
-				_network_client.connect("on_peers_ready",Callable(self,"_on_network_ready"))
-				add_child(_network_client)
-
-				#if server, create server, promote it and connect to it
-				if _network_mode==NetMode.Server :
-					print("IVMI : Starting server")
-					_network_server = IvmiServer.new()
-					_network_server._port = _server_port
-					add_child(_network_server)
-					#connect locally
-					_on_found_server("127.0.0.1", _server_port)
+#			if OS.get_name()=="HTML5" :
+#				#create client
+#				_network_client = IvmiClient.new()
+#				_network_client.connect("on_peers_ready",Callable(self,"_on_network_ready"))
+#				add_child(_network_client)
+#				#connect to server
+#				_on_found_server(_server_ip, _server_port)
+#			else :
+#				#create client
+#				_network_client = IvmiClient.new()
+#				_network_client.connect("on_peers_ready",Callable(self,"_on_network_ready"))
+#				add_child(_network_client)
+#
+#				#if server, create server, promote it and connect to it
+#				if _network_mode==NetMode.Server :
+#					print("IVMI : Starting server")
+#					_network_server = IvmiServer.new()
+#					_network_server._port = _server_port
+#					add_child(_network_server)
+#					#connect locally
+#					_on_found_server("127.0.0.1", _server_port)
+			pass
 
 		elif _network_protocol==NetProto.Enet :
 				match _network_mode :
@@ -199,7 +194,9 @@ func _init():
 						# init server
 						var peer = ENetMultiplayerPeer.new()
 						peer.create_server(_server_port)
-						get_tree().network_peer = peer
+						multiplayer.multiplayer_peer = peer
+						_on_network_ready()
+						print("IVMI : Starting Server")
 					NetMode.Client :
 						if _server_ip!="" :
 							_on_found_server(_server_ip, _server_port)
@@ -214,6 +211,10 @@ func _init():
 		_network_discov.connect("timeout",Callable(self,"_on_timeout"))
 		_network_discov.start()
 
+# TODO trying to fix resume error on quest, not working yet ...
+func _on_play_area_changed() :
+	get_viewport().use_xr = true
+
 func _process(delta) :
 	if is_inside_tree() :
 		match _pd_mode :
@@ -256,15 +257,14 @@ func _process(delta) :
 func _on_found_server(server_ip, port) :
 	match _network_protocol :
 			NetProto.WebRTC :
-				_network_client.connect_to_server(server_ip, port)
+				#_network_client.connect_to_server(server_ip, port)
+				pass
 			NetProto.Enet :
+				print("IVMI : Connecting to server ", server_ip, " ", port)
 				var peer = ENetMultiplayerPeer.new()
 				peer.create_client(server_ip, port)
-				get_tree().network_peer = peer
-				#get_tree().connect("peer_disconnected",Callable(self,"_player_disconnected"))
-				#get_tree().connect("connected_to_server",Callable(self,"_connected_ok"))
-				#get_tree().connect("connection_failed",Callable(self,"_connected_fail"))
-				#get_tree().connect("server_disconnected",Callable(self,"_server_disconnected"))
+				multiplayer.multiplayer_peer = peer
+				multiplayer.connected_to_server.connect(_on_network_ready)
 
 
 func _on_timeout() :
@@ -282,12 +282,12 @@ func _on_timeout() :
 			NetProto.Enet :
 				var peer = ENetMultiplayerPeer.new()
 				peer.create_server(_server_port)
-				get_tree().network_peer = peer
+				multiplayer.multiplayer_peer = peer
+				_on_network_ready()
 		print("IVMI : Starting server")
 
 func _on_network_ready() :
 	print("IVMI : Network ready")
-	get_tree().set_multiplayer_peer(_network_client.get_multiplayer_peer())
 	_is_connected=true
 
 func set_server_ip(ip):
@@ -342,11 +342,6 @@ func send(address, tags, args) :
 #	print("\n", player_info[id].name, " just disconnected from server", "\n")
 #	player_info.erase(id)
 
-#func _connected_ok():
-#	print("\n", "Successfully connected to server", "\n")
-#	rpc_id(1, "register_player", my_info)
-#	_is_connected = true
-
 #func _server_disconnected():
 #	printerr("\n", "Disconnected from server", "\n")
 
-- 
GitLab