From 346141226141d40be5ca659e7bcf3cf7f42a766b Mon Sep 17 00:00:00 2001
From: Florent Berthaut <florent.berthaut@univ-lille.fr>
Date: Thu, 30 Nov 2023 23:22:41 +0100
Subject: [PATCH] Fix properties

---
 core/IvmiNode.gd                       | 26 +++++++++++++-------------
 techniques/control/Button/Button.gd    |  6 +++++-
 techniques/control/Button/Button_v3.gd |  6 +++++-
 techniques/technique.gd                |  5 +++--
 4 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/core/IvmiNode.gd b/core/IvmiNode.gd
index 73602ff..5061ba9 100644
--- a/core/IvmiNode.gd
+++ b/core/IvmiNode.gd
@@ -46,7 +46,7 @@ func _allow_send_data(value : bool):
 	_send_data = value
 	
 func _add_property(prop, values) -> void :
-	_properties[prop] = load("res://addons/ivmi-builder/core/IvmiProperty.gd").new()
+	_properties[prop] = IvmiProperty.new()
 	_properties[prop].init_values(values)
 	_properties[prop].set_ivmi_node(self)
 	_properties[prop].set_name(prop)
@@ -129,22 +129,22 @@ func _get_ivmi_type():
 	return _ivmi_type
 
 func _process(delta):	
-	if is_inside_tree(): 
-		#get cam dist if needed
+	#get cam dist if needed
+	if _properties.has("distance_to_camera") :
 		if _properties["distance_to_camera"]._listen:
 			var cam_pos = get_viewport().get_camera_3d().to_global(Vector3(0,0,0))
 			var obj_pos = to_global(Vector3(0,0,0))
 			_properties["distance_to_camera"].set_values([(cam_pos-obj_pos).length()])
-		
-		#output all values listened to which have changed
-		if _send_data:
-			for k in _properties.keys():
-				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
+	
+	#output all values listened to which have changed
+	if _send_data:
+		for k in _properties.keys():
+			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) :
diff --git a/techniques/control/Button/Button.gd b/techniques/control/Button/Button.gd
index 54d4216..384b714 100644
--- a/techniques/control/Button/Button.gd
+++ b/techniques/control/Button/Button.gd
@@ -1,4 +1,4 @@
-extends "res://addons/ivmi-builder/core/IvmiNode.gd"
+extends IvmiNode
 
 signal button_pressed
 signal button_released
@@ -10,8 +10,12 @@ signal button_released
 @export var release_speed = 8
 
 func _ready():
+	super._ready()
 	_add_property("triggered", [0])
 
+func _process(delta):
+	super._process(delta)
+
 func _physics_process(delta): 
 	if get_property("triggered")[0]:
 		_button.position = lerp(_button.position,_released_position,delta * release_speed)
diff --git a/techniques/control/Button/Button_v3.gd b/techniques/control/Button/Button_v3.gd
index acdd369..3b54c86 100644
--- a/techniques/control/Button/Button_v3.gd
+++ b/techniques/control/Button/Button_v3.gd
@@ -1,4 +1,4 @@
-extends "res://addons/ivmi-builder/core/IvmiNode.gd"
+extends IvmiNode
 
 @onready var _button = get_node("Button")
 @onready var _pressed_position = get_node("Pressed").position
@@ -9,8 +9,12 @@ extends "res://addons/ivmi-builder/core/IvmiNode.gd"
 var _moving = false
 
 func _ready():
+	super._ready()
 	_add_property("triggered", [0])
 
+func _process(delta):
+	super._process(delta)
+
 func _physics_process(delta): 
 	if !get_property("triggered")[0] and _moving:
 		_button.position = lerp(_button.position,_released_position,delta * release_speed)
diff --git a/techniques/technique.gd b/techniques/technique.gd
index 09ce6b0..e14bb80 100644
--- a/techniques/technique.gd
+++ b/techniques/technique.gd
@@ -5,13 +5,14 @@ extends IvmiNode
 
 var _speed_evaluation_time = 0
 
-func _init():
-	super._init()
+func _ready():
+	super._ready()
 	_set_ivmi_type("technique")
 	add_to_group("ivmi_techniques")
 	_add_property("speed", [0])
 
 func _process(delta):
+	super._process(delta)
 	if _properties["speed"]._listen:
 		_speed_evaluation_time += delta
 		if _speed_evaluation_time >= _speed_evaluation_delay:
-- 
GitLab