Skip to content
Snippets Groups Projects
Commit 8936dadc authored by Florent Berthaut's avatar Florent Berthaut
Browse files

Updated tunnel to use multimesh instance

parent 2a4a8f0c
No related branches found
No related tags found
No related merge requests found
...@@ -9,14 +9,17 @@ var _slices = [] ...@@ -9,14 +9,17 @@ var _slices = []
var tunnel_preset_array = [] var tunnel_preset_array = []
@onready var _area : Area3D = get_node("Area3D") @onready var _area : Area3D = get_node("Area3D")
var NUMBER_OF_SLICES = 50 @onready var _nb_slices : int = $MultiSlice.multimesh.instance_count
var RADIUS = 0.1
const NUMBER_OF_SLICES : int = 100
const RADIUS : float = 0.1
func _ready(): func _ready():
super._ready() super._ready()
_update_tunnel_preset_array() _update_tunnel_preset_array()
_generate_slice() #_generate_slice()
_update_slices() #_update_slices()
_update_multislice()
func _update_tunnel_preset_array(): func _update_tunnel_preset_array():
tunnel_preset_array = [] tunnel_preset_array = []
...@@ -56,11 +59,7 @@ func _update_slices() : ...@@ -56,11 +59,7 @@ func _update_slices() :
s.scale.z = 0.5 s.scale.z = 0.5
s.rotation_degrees.x = 0 s.rotation_degrees.x = 0
for param in tunnel_preset_array[_preset_index]: for param in tunnel_preset_array[_preset_index]:
var value : float var value : float = param.curve.sample(ratio)
if param.data_type == DATA_TYPE.array:
value = _find_value_in_array(ratio,param.array)
else:
value = param.curve.sample(ratio)
if value > 1.0 : if value > 1.0 :
value/=127 value/=127
...@@ -77,8 +76,45 @@ func _update_slices() : ...@@ -77,8 +76,45 @@ func _update_slices() :
s.rotation_degrees.x = value*180 s.rotation_degrees.x = value*180
"tunnel_density" : "tunnel_density" :
s.scale.y = value s.scale.y = value
#FIXME add other params
i+=1.0 i+=1.0
func _update_multislice() :
for s in range(_nb_slices) :
var col : Color
col.h = 0.5
col.s = 1.0
col.v = 0.5
var trans : Transform3D = Transform3D()
trans.origin = Vector3((s-_nb_slices/2)*(1.0/_nb_slices), 0, 0)
var rot : Vector3 = Vector3(0.0, 0.0, PI/2.0)
var sca : Vector3 = Vector3(0.9,1.0,1.0)
var ratio : float = float(s) / float(_nb_slices)
for param in tunnel_preset_array[_preset_index]:
var value : float = param.curve.sample(ratio)
if value > 1.0 :
value/=127
match param.name:
"tunnel_color_scale" :
col = col.from_hsv(fmod(value*5.0,1.0), 1.0 - abs(value*2.0-1.0), value)
pass
"tunnel_height" :
sca.y = value*0.9+0.1
sca.z = value*0.9+0.1
"tunnel_rotation" :
rot.x = value*PI/4.0
"tunnel_density" :
sca.x = value*0.8+0.1
pass
#trans.basis = trans.basis.from_euler(Vector3(0.0, 0.0, PI/2.0))
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 _physics_process(delta): func _physics_process(delta):
if !Engine.is_editor_hint() : if !Engine.is_editor_hint() :
if _ivmi._pd_mode!=IvmiScene.PdMode.NONE: if _ivmi._pd_mode!=IvmiScene.PdMode.NONE:
...@@ -92,11 +128,7 @@ func _physics_process(delta): ...@@ -92,11 +128,7 @@ func _physics_process(delta):
var ratio = clamp(col_pos.x+0.5,0,1) var ratio = clamp(col_pos.x+0.5,0,1)
#set all active parameters #set all active parameters
for param in tunnel_preset_array[_preset_index]: for param in tunnel_preset_array[_preset_index]:
var value var value : float = param.curve.sample(ratio)
if param.data_type == DATA_TYPE.array:
value = _find_value_in_array(ratio,param.array)
else:
value = param.curve.sample(ratio)
if value > 1.0 : if value > 1.0 :
value/=127 value/=127
col.set_property(param.name, [value]) col.set_property(param.name, [value])
...@@ -104,17 +136,10 @@ func _physics_process(delta): ...@@ -104,17 +136,10 @@ func _physics_process(delta):
func get_extent(): func get_extent():
return Vector3(1.0, 0.2, 0.2) return Vector3(1.0, 0.2, 0.2)
# Find the highest vec.x < x in the array
func _find_value_in_array(x,array):
var val : float = array[array.size()-1].y
for vec in array:
if vec.x<=x:
val = vec.y
return val
func _cycle_preset(): func _cycle_preset():
_preset_index = (_preset_index+1)%tunnel_preset_array.size() _preset_index = (_preset_index+1)%tunnel_preset_array.size()
_update_slices() #pdate_slices()
_update_multislice()
func _set_property(prop, vals) : func _set_property(prop, vals) :
...@@ -126,9 +151,10 @@ func _set_property(prop, vals) : ...@@ -126,9 +151,10 @@ func _set_property(prop, vals) :
func _update_tunnel(): func _update_tunnel():
_update_tunnel_preset_array() _update_tunnel_preset_array()
_update_slices() _update_multislice()
func _set_preset_index(val): func _set_preset_index(val):
if val < (get_child_count()-1) and val >= 0: if val < (get_child_count()-1) and val >= 0:
_preset_index = val _preset_index = val
_update_tunnel() #_update_tunnel()
_update_multislice()
shader_type spatial;
varying vec3 col;
varying float dep;
void vertex() {
col = INSTANCE_CUSTOM.rgb;
dep = VERTEX.x;
}
void fragment() {
ALBEDO = col*(dep*0.5+0.5);
}
[gd_scene load_steps=3 format=3 uid="uid://bngkenwtwh5fg"] [gd_scene load_steps=7 format=3 uid="uid://bngkenwtwh5fg"]
[ext_resource type="Script" path="res://addons/ivmi-builder/techniques/control/Tunnel/Tunnel.gd" id="1"] [ext_resource type="Script" path="res://addons/ivmi-builder/techniques/control/Tunnel/Tunnel.gd" id="1"]
[ext_resource type="Shader" path="res://addons/ivmi-builder/techniques/control/Tunnel/Tunnel.gdshader" id="2_kaxyo"]
[sub_resource type="BoxShape3D" id="1"] [sub_resource type="BoxShape3D" id="1"]
resource_local_to_scene = true resource_local_to_scene = true
margin = 0.0 margin = 0.0
size = Vector3(1, 0.1, 0.1) size = Vector3(1, 0.1, 0.1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_mccv5"]
render_priority = 0
shader = ExtResource("2_kaxyo")
[sub_resource type="CylinderMesh" id="CylinderMesh_3cymo"]
material = SubResource("ShaderMaterial_mccv5")
top_radius = 0.05
bottom_radius = 0.05
height = 0.01
radial_segments = 5
rings = 1
[sub_resource type="MultiMesh" id="MultiMesh_5i54s"]
resource_local_to_scene = true
transform_format = 1
use_custom_data = true
instance_count = 100
mesh = SubResource("CylinderMesh_3cymo")
buffer = PackedFloat32Array(-3.93403e-08, -0.9, 0, -0.5, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.49, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.48, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.47, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.46, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.45, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.44, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.43, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.42, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.41, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.4, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.39, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.38, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.37, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.36, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.35, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.34, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.33, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.32, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.31, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.3, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.29, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.28, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.27, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.26, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.25, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.24, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.23, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.22, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.21, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.2, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.19, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.18, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.17, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.16, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.15, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.14, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.13, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.12, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.11, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.1, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.09, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.08, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.07, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.06, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.05, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.04, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.03, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.02, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, -0.01, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.01, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.02, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.03, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.04, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.05, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.06, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.07, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.08, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.09, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.1, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.11, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.12, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.13, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.14, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.15, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.16, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.17, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.18, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.19, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.2, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.21, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.22, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.23, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.24, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.25, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.26, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.27, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.28, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.29, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.3, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.31, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.32, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.33, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.34, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.35, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.36, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.37, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.38, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.39, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.4, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.41, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.42, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.43, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.44, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.45, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.46, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.47, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.48, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1, -3.93403e-08, -0.9, 0, 0.49, 1, -4.37114e-08, 0, 0, 0, 0, 1, 0, 0.5, 0.5, 0.5, 1)
[node name="Tunnel" type="Node3D"] [node name="Tunnel" type="Node3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
script = ExtResource("1") script = ExtResource("1")
[node name="Slices" type="Node3D" parent="."] [node name="Slices" type="Node3D" parent="."]
visible = false
[node name="Area3D" type="Area3D" parent="."] [node name="Area3D" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.01, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.01, 0, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
shape = SubResource("1") shape = SubResource("1")
[node name="MultiSlice" type="MultiMeshInstance3D" parent="."]
multimesh = SubResource("MultiMesh_5i54s")
...@@ -4,3 +4,4 @@ var name = "undefined" ...@@ -4,3 +4,4 @@ var name = "undefined"
var data_type var data_type
var array = [] var array = []
var curve var curve
var string : String
@tool @tool
extends "res://addons/ivmi-builder/core/IvmiNode.gd" extends "res://addons/ivmi-builder/core/IvmiNode.gd"
enum DATA_TYPE {curve,array} enum DATA_TYPE {curve,array,string}
@export var active = true @export var active = true
@export var _height_active: bool = false : set = _set_height_active
@export var _height_data_type: DATA_TYPE = DATA_TYPE.array : set = _set_height_data_type
@export var _height_curve: Curve : set = _set_height_curve @export var _height_curve: Curve : set = _set_height_curve
@export var _height_array = [] : set = _set_height_array # (Array,Vector2)
@export var _color_active: bool = false : set = _set_color_active
@export var _color_data_type: DATA_TYPE = DATA_TYPE.array : set = _set_color_data_type
@export var _color_curve: Curve : set = _set_color_curve @export var _color_curve: Curve : set = _set_color_curve
@export var _color_array = [] : set = _set_color_array # (Array,Vector2)
@export var _rotation_active: bool = false : set = _set_rotation_active
@export var _rotation_data_type: DATA_TYPE = DATA_TYPE.array : set = _set_rotation_data_type
@export var _rotation_curve: Curve : set = _set_rotation_curve @export var _rotation_curve: Curve : set = _set_rotation_curve
@export var _rotation_array = [] : set = _set_rotation_array # (Array,Vector2) @export var _speed_curve: Curve : set = _set_speed_curve
@export var _density_active: bool = false : set = _set_density_active
@export var _density_data_type: DATA_TYPE = DATA_TYPE.array : set = _set_density_data_type
@export var _density_curve: Curve : set = _set_density_curve @export var _density_curve: Curve : set = _set_density_curve
@export var _density_array = [] : set = _set_density_array # (Array,Vector2) @export var _brightness_curve: Curve : set = _set_brightness_curve
@export var _noisiness_curve: Curve : set = _set_noisiness_curve
var tunnel_param_data_script = preload("res://addons/ivmi-builder/techniques/control/Tunnel/TunnelParamData.gd") var tunnel_param_data_script = preload("res://addons/ivmi-builder/techniques/control/Tunnel/TunnelParamData.gd")
...@@ -36,52 +24,57 @@ func _ready() : ...@@ -36,52 +24,57 @@ func _ready() :
_color_curve.connect("changed",Callable(self,"_on_color_curve_changed")) _color_curve.connect("changed",Callable(self,"_on_color_curve_changed"))
if _rotation_curve: if _rotation_curve:
_rotation_curve.connect("changed",Callable(self,"_on_rotation_curve_changed")) _rotation_curve.connect("changed",Callable(self,"_on_rotation_curve_changed"))
if _speed_curve:
_speed_curve.connect("changed",Callable(self,"_on_speed_curve_changed"))
if _density_curve: if _density_curve:
_density_curve.connect("changed",Callable(self,"_on_density_curve_changed")) _density_curve.connect("changed",Callable(self,"_on_density_curve_changed"))
if _brightness_curve:
_brightness_curve.connect("changed",Callable(self,"_on_brightness_curve_changed"))
if _noisiness_curve:
_noisiness_curve.connect("changed",Callable(self,"_on_noisiness_curve_changed"))
func get_tunnel_preset_data(): func get_tunnel_preset_data():
var tunnel_param_data_array = [] var tunnel_param_data_array = []
if _height_active: if _height_curve:
var tunnel_param_data = tunnel_param_data_script.new() var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_height" tunnel_param_data.name = "tunnel_height"
tunnel_param_data.data_type = _height_data_type tunnel_param_data.curve = _height_curve
if _height_data_type == DATA_TYPE.array:
tunnel_param_data.array = _height_array
else:
tunnel_param_data.curve = _height_curve
#print(name)
#print(tunnel_param_data.curve)
#print(tunnel_param_data.curve.get_point_count())
tunnel_param_data_array.append(tunnel_param_data) tunnel_param_data_array.append(tunnel_param_data)
if _rotation_active: if _rotation_curve:
var tunnel_param_data = tunnel_param_data_script.new() var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_rotation" tunnel_param_data.name = "tunnel_rotation"
tunnel_param_data.data_type = _rotation_data_type tunnel_param_data.curve = _rotation_curve
if _rotation_data_type == DATA_TYPE.array: tunnel_param_data_array.append(tunnel_param_data)
tunnel_param_data.array = _rotation_array
else: if _speed_curve:
tunnel_param_data.curve = _rotation_curve var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_speed"
tunnel_param_data.curve = _speed_curve
tunnel_param_data_array.append(tunnel_param_data) tunnel_param_data_array.append(tunnel_param_data)
if _color_active: if _color_curve:
var tunnel_param_data = tunnel_param_data_script.new() var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_color_scale" tunnel_param_data.name = "tunnel_color_scale"
tunnel_param_data.data_type = _color_data_type tunnel_param_data.curve = _color_curve
if _color_data_type == DATA_TYPE.array:
tunnel_param_data.array = _color_array
else:
tunnel_param_data.curve = _color_curve
tunnel_param_data_array.append(tunnel_param_data) tunnel_param_data_array.append(tunnel_param_data)
if _density_active: if _density_curve:
var tunnel_param_data = tunnel_param_data_script.new() var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_density" tunnel_param_data.name = "tunnel_density"
tunnel_param_data.data_type = _density_data_type tunnel_param_data.curve = _density_curve
if _density_data_type == DATA_TYPE.array: tunnel_param_data_array.append(tunnel_param_data)
tunnel_param_data.array = _density_array
else: if _brightness_curve:
tunnel_param_data.curve = _density_curve var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_brightness"
tunnel_param_data.curve = _brightness_curve
tunnel_param_data_array.append(tunnel_param_data)
if _noisiness_curve:
var tunnel_param_data = tunnel_param_data_script.new()
tunnel_param_data.name = "tunnel_noisiness"
tunnel_param_data.curve = _noisiness_curve
tunnel_param_data_array.append(tunnel_param_data) tunnel_param_data_array.append(tunnel_param_data)
return tunnel_param_data_array return tunnel_param_data_array
...@@ -93,66 +86,44 @@ func _update_tunnel(): ...@@ -93,66 +86,44 @@ func _update_tunnel():
parent._update_tunnel() parent._update_tunnel()
func _set_height_active(val):
_height_active = val
_update_tunnel()
func _set_height_data_type(val):
_height_data_type = val
_update_tunnel()
func _set_height_curve(val): func _set_height_curve(val):
_height_curve = val _height_curve = val
_update_tunnel() _update_tunnel()
func _on_height_curve_changed() : func _on_height_curve_changed() :
_update_tunnel() _update_tunnel()
func _set_height_array(val):
_height_array = val
_update_tunnel()
func _set_color_active(val):
_color_active = val
_update_tunnel()
func _set_color_data_type(val):
_color_data_type = val
_update_tunnel()
func _set_color_curve(val): func _set_color_curve(val):
_color_curve = val _color_curve = val
_update_tunnel() _update_tunnel()
func _on_color_curve_changed() : func _on_color_curve_changed() :
_update_tunnel() _update_tunnel()
func _set_color_array(val):
_color_array = val
_update_tunnel()
func _set_rotation_active(val):
_rotation_active = val
_update_tunnel()
func _set_rotation_data_type(val):
_rotation_data_type = val
_update_tunnel()
func _set_rotation_curve(val): func _set_rotation_curve(val):
_rotation_curve = val _rotation_curve = val
_update_tunnel() _update_tunnel()
func _on_rotation_curve_changed() : func _on_rotation_curve_changed() :
_update_tunnel() _update_tunnel()
func _set_rotation_array(val):
_rotation_array = val
_update_tunnel()
func _set_density_active(val): func _set_speed_curve(val):
_density_active = val _speed_curve = val
_update_tunnel() _update_tunnel()
func _set_density_data_type(val): func _on_speed_curve_changed() :
_density_data_type = val
_update_tunnel() _update_tunnel()
func _set_density_curve(val): func _set_density_curve(val):
_density_curve = val _density_curve = val
_update_tunnel() _update_tunnel()
func _on_density_curve_changed() : func _on_density_curve_changed() :
_update_tunnel() _update_tunnel()
func _set_density_array(val):
_density_array = val func _set_brightness_curve(val):
_brightness_curve = val
_update_tunnel() _update_tunnel()
func _on_brightness_curve_changed() :
_update_tunnel()
func _set_noisiness_curve(val):
_noisiness_curve = val
_update_tunnel()
func _on_noisiness_curve_changed() :
_update_tunnel()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment