From 85808440342cd7f80cf7ccc8a661060c6346a6da Mon Sep 17 00:00:00 2001
From: Florent Berthaut <florent.berthaut@univ-lille.fr>
Date: Thu, 30 Nov 2023 11:56:47 +0100
Subject: [PATCH] Fix recording

---
 core/IvmiNode.gd                          |   8 ++-
 core/IvmiProperty.gd                      |   5 +-
 core/IvmiScene.gd                         |  68 ++++++----------------
 patches/ivm-fx-autogate.pd                | Bin 6946 -> 6989 bytes
 patches/ivm-syn-granular.pd               | Bin 14287 -> 14327 bytes
 techniques/control/Tunnel/Tunnel.gd       |   4 +-
 techniques/control/Tunnel/TunnelPreset.gd |   6 ++
 7 files changed, 36 insertions(+), 55 deletions(-)

diff --git a/core/IvmiNode.gd b/core/IvmiNode.gd
index 8b545f3..73602ff 100644
--- a/core/IvmiNode.gd
+++ b/core/IvmiNode.gd
@@ -139,9 +139,13 @@ func _process(delta):
 		#output all values listened to which have changed
 		if _send_data:
 			for k in _properties.keys():
-				if _properties[k]._listen && _properties[k]._changed :
-					_ivmi.send(name+"/"+k, _properties[k]._tags, get_property(k))
+				if _properties[k]._changed :
+					if _properties[k]._listen :
+						_ivmi.send(name+"/"+k, _properties[k]._tags, get_property(k))
+					if _properties[k]._record and _ivmi.is_recording():
+						_ivmi.record_property(name+"/"+k, _properties[k]._tags, get_property(k))
 					_properties[k]._changed=false
 
+
 func send_prop(prop) :
 	_ivmi.send(name+"/"+prop, _properties[prop]._tags, get_property(prop))
diff --git a/core/IvmiProperty.gd b/core/IvmiProperty.gd
index 4316385..772533d 100644
--- a/core/IvmiProperty.gd
+++ b/core/IvmiProperty.gd
@@ -10,7 +10,7 @@ var _listen = false
 var _tags = ""
 var _immediate = false
 var _ivmi_node = null
-
+var _record = false
 
 func set_values(vals : Array) :
 	if vals.size() ==  _values.size() :
@@ -47,6 +47,9 @@ func set_name(n):
 func set_listen(l) :
 	_listen=l
 	
+func set_record(r) :
+	_record=r
+	
 func set_immediate(i) :
 	_immediate=i
 	
diff --git a/core/IvmiScene.gd b/core/IvmiScene.gd
index 13ca34b..a9efaa4 100644
--- a/core/IvmiScene.gd
+++ b/core/IvmiScene.gd
@@ -38,7 +38,7 @@ enum VRMode {SplitHorizontal, SplitVertical, Anaglyph, QuadBuffer}
 @export var _screen_vr_screen_size=Vector2(3,2) : set = set_screen_vr_screen_size
 @export var _screen_vr_window_size=Vector2(1024,600) : set = set_screen_vr_window_size
 @export var _screen_vr_window_position=Vector2(640,480) : set = set_screen_vr_window_position
-var _xr_interface : XRInterface
+var _xr_interface : XRInterface = null
 var _config
 
 # Network variables
@@ -159,57 +159,19 @@ func _ready():
 	#initialize either libpd or osc patch
 	send("init", "f", [1])
 
-	for argument in OS.get_cmdline_args():
-		if argument == "--serve":
-			_network_mode = NetMode.Server
-		#elif argument.find("=") > -1:
-		#	var key_value = argument.split("=")
-		#	if key_value[0] == "--name":
-		#		_client_name = key_value[1]
-		#		my_info.name = _client_name
-		#	elif key_value[0] == "--ip":
-		#		_server_ip = key_value[1]
-		#	elif key_value[0] == "--port":
-		#		_server_port = key_value[1]
-
-
 	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)
-			pass
-
-		elif _network_protocol==NetProto.Enet :
-				match _network_mode :
-					NetMode.Server :
-						# init server
-						var peer = ENetMultiplayerPeer.new()
-						peer.create_server(_server_port)
-						multiplayer.multiplayer_peer = peer
-						_on_network_ready()
-						print("IVMI : Starting Server")
-					NetMode.Client :
-						if _server_ip!="" :
-							_on_found_server(_server_ip, _server_port)
+		if _network_protocol==NetProto.Enet :
+			match _network_mode :
+				NetMode.Server :
+					# init server
+					var peer = ENetMultiplayerPeer.new()
+					peer.create_server(_server_port)
+					multiplayer.multiplayer_peer = peer
+					_on_network_ready()
+					print("IVMI : Starting Server")
+				NetMode.Client :
+					if _server_ip!="" :
+						_on_found_server(_server_ip, _server_port)
 
 
 		#start discov
@@ -264,6 +226,7 @@ func _process(delta) :
 				_recording_index+=1
 			if _recording_index>=_recorded_props.size():
 				_recording_state=RecordingState.STOPPED
+				_recording_playing_done()
 
 
 
@@ -423,6 +386,9 @@ func record_property(address, tags, values) :
 	args.append_array(values)
 	var t = Time.get_ticks_msec()-_recording_time
 	_recorded_props.append({"time":t, "address":addr, "tags":tags, "args":args})
+	
+func _recording_playing_done() :
+	pass
 
 # --------------------------
 
diff --git a/patches/ivm-fx-autogate.pd b/patches/ivm-fx-autogate.pd
index 060a6603e8f846bea5daf384c541fa86cd5be1bb..5ba82e98751ee2fe7f7d92a65761b0c1d8df21e7 100644
GIT binary patch
delta 94
zcmZ2vcGhgdq{-_TRVHq;XH=NHmQi)GG^71wE=KOjsf_N73Y*t5Zf0dv*qq3o$u^mb
zk!$l6-V|nm{G==eGc$7qBU6RUyqwgM&BlV~IeGK)Qj<#*ER7Tl6bwx!|CG`M0E<H$
A!~g&Q

delta 63
zcmX?Ww#aP4Bu1{u>lu|NZnJ0PnmAE&vOJ?TBiH0;#y}8Pb@L_0K2}Dq&57)pY>Zr+
SPxIz7Z}t^D#W`75S^)r!sS{}c

diff --git a/patches/ivm-syn-granular.pd b/patches/ivm-syn-granular.pd
index 572ca4f482e4609a9372414d3ef9a9717c624500..fb3aebf84cac978796ec3427554cfc40713b35e2 100644
GIT binary patch
delta 190
zcmX?~|2==g<jFz2!jo^PiB8;Y%ch`fq@ZgtIe=FbBr;ip(PnZeufXIRYW$m<8BeoJ
z-X<?Nd4ZJp<}$YTY#`3&1yZ|NHX90^WJK_eNx*r0tdnDTIW}*T=Vb?(x%q}#9n0i!
zZ5L*QC4!TWXva@h(dpZ~S?3B9NIA$P9y2o|1rtk!%)Fe`lFifgB{+EV@=}va6wFN(
N3=|B_CoePC1OSlpL3#iH

delta 155
zcmeyKe?EW0WJa#ZjEtHS_gXV@P2Q)bKUss(hLLM>gOvE>2Wsq_n;B2DFmg?vAf>*!
zjO{%eBiH5$Qm0uq8w#Cdgt3oFK-qGvj9i=7%Zsoxa!n58mD&72tqi0$OxuN#Yw|%g
pjmd|#;~BXoE9vwxa&6wAbA?HOOW6Pn6rl9xmHHAKldqdA002RHFINBn

diff --git a/techniques/control/Tunnel/Tunnel.gd b/techniques/control/Tunnel/Tunnel.gd
index 9d02878..724beca 100644
--- a/techniques/control/Tunnel/Tunnel.gd
+++ b/techniques/control/Tunnel/Tunnel.gd
@@ -60,7 +60,9 @@ func _update_multislice() :
 		trans.basis = Basis.from_euler(rot).scaled(sca)
 		$MultiSlice.multimesh.set_instance_transform(s, trans)
 		$MultiSlice.multimesh.set_instance_custom_data(s, Color(col.r,col.g,col.b,1.0))
-		
+
+func _process(delta : float) -> void	:
+	super._process(delta)
 
 
 func _physics_process(delta):
diff --git a/techniques/control/Tunnel/TunnelPreset.gd b/techniques/control/Tunnel/TunnelPreset.gd
index 0c3a1d4..76ca619 100644
--- a/techniques/control/Tunnel/TunnelPreset.gd
+++ b/techniques/control/Tunnel/TunnelPreset.gd
@@ -34,6 +34,12 @@ func _ready() :
 	if _noisiness_curve:
 		_noisiness_curve.connect("changed",Callable(self,"_on_noisiness_curve_changed"))
 
+func _process(delta):
+	super._process(delta)
+
+func _set_property(prop, vals) :
+	super._set_property(prop, vals)
+
 func get_tunnel_preset_data():
 	var tunnel_param_data_array = []
 	if _height_curve:
-- 
GitLab