Skip to content
Snippets Groups Projects
Select Git revision
  • 51d73838c824713a32bdd11b0c85cff3b34f113c
  • main default protected
  • godot4
3 results

SynthLine.tscn

Blame
  • Forked from IVMI / Ivmi-Builder
    Source project has a limited visibility.
    SynthLine.tscn 2.72 KiB
    [gd_scene load_steps=4 format=3 uid="uid://drd8ir0kn6r4u"]
    
    [sub_resource type="GDScript" id="1"]
    script/source = "tool 
    extends \"res://addons/ivmi-builder/core/IvmiNode.gd\"
    
    @export var _modulation setget set_modulation # (float, 0, 1)
    @export var _filter setget set_filter # (float, 0, 1)
    @export var _noisiness setget set_noisiness # (float, 0, 1)
    @export var _pitch setget set_pitch # (float, 30, 60)
    
    var _hsv = [0, 1, 1]
    
    func _ready():
    	_set_ivmi_type(\"synth_line\")
    	
    	set_property(\"color_hsv\", _hsv)
    	_add_property(\"modulation\", [_modulation])
    	_add_property(\"filter\", [_filter])
    	_add_property(\"noisiness\", [_noisiness])
    	_add_property(\"pitch\", [_pitch])
    
    func set_modulation(m) :
    	_modulation = m
    	if is_inside_tree() :
    		set_property(\"modulation\", [_modulation])
    		rotation_degrees[2] = m*45
    	
    func set_filter(f) :
    	_filter = f
    	_hsv[2] = f*0.5+0.5
    	if is_inside_tree() :
    		set_property(\"filter\", [_filter])
    		set_property(\"color_hsv\", _hsv)
    
    func set_noisiness(n) :
    	_noisiness = n
    	_hsv[1] = 1-n
    	if is_inside_tree() :
    		set_property(\"noisiness\", [_noisiness])
    		set_property(\"color_hsv\", _hsv)
    
    func set_pitch(p) :
    	_pitch = p
    	_hsv[0] = p/127
    	if is_inside_tree() :
    		set_property(\"pitch\", [_pitch])
    		set_property(\"color_hsv\", _hsv)
    
    func _set_property(prop, vals) :
    	super._set_property(prop, vals)
    	match prop:
    		\"transparency\" :
    			get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.a=vals[0]
    		\"color_hsv\" :
    			get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.h=vals[0]
    			get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.s=vals[1]
    			get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.v=vals[2]
    			
    func get_property(prop) :
    	match prop :
    		\"transparency\" :
    			return get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.a
    		\"color_hsv\" :
    			return [get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.h,
    					get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.s,
    					get_node(\"MeshInstance3D\").get_surface_override_material(0).albedo_color.v]
    		
    	return super.get_property(prop)
    "
    
    [sub_resource type="CylinderMesh" id="2"]
    top_radius = 0.1
    bottom_radius = 0.1
    height = 500.0
    
    [sub_resource type="StandardMaterial3D" id="3"]
    resource_local_to_scene = true
    transparency = 1
    albedo_color = Color(1, 0.023622, 0, 1)
    
    [node name="SynthLine" type="Node3D"]
    script = SubResource("1")
    __meta__ = {
    "IVMI": true,
    "IVMI_Node_Type": "synth_line"
    }
    _pitch = 0.5
    
    [node name="MeshInstance3D" type="MeshInstance3D" parent="."]
    transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
    mesh = SubResource("2")
    material/0 = SubResource("3")