Fixes for the EasySDF editor

This commit is contained in:
Rodolphe Suescun 2024-08-26 11:24:42 +02:00
parent 6da1ad6ea6
commit 027e56b2bf
5 changed files with 41 additions and 47 deletions

View File

@ -33,12 +33,12 @@ mode = 3
[node name="ArrowY" parent="." instance=ExtResource("1")]
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
material = SubResource("5")
mode = 1
mode = 3
[node name="ArrowZ" parent="." instance=ExtResource("1")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
material = SubResource("6")
mode = 1
mode = 3
[connection signal="move" from="ArrowX" to="." method="_on_Arrow_move"]
[connection signal="rotate" from="ArrowX" to="." method="_on_Arrow_rotate"]

View File

@ -40,12 +40,13 @@ func _ready():
func set_material(m):
material = m
if is_inside_tree():
$Arrow.set_surface_override_material(0, material)
$Torus.set_surface_override_material(0, material)
for mesh in [$Arrow, $Arrow/Tip, $Torus]:
mesh.set_surface_override_material(0, material)
func _on_TranslateArea_input_event(camera, event, _position, _normal, _shape_idx):
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
$Arrow.get_surface_override_material(0).set_shader_parameter("highlight", 0.1 if event.pressed else 0.0)
for mesh in [$Arrow, $Arrow/Tip]:
$Arrow.get_surface_override_material(0).set_shader_parameter("highlight", 0.1 if event.pressed else 0.0)
elif event is InputEventMouseMotion and event.button_mask == MOUSE_BUTTON_MASK_LEFT:
var origin : Vector3 = global_transform * Vector3(0, 0, 0)
var end : Vector3 = global_transform * Vector3(1, 0, 0)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://duqci7ecjbnyx"]
[gd_scene load_steps=8 format=3 uid="uid://duqci7ecjbnyx"]
[ext_resource type="Script" path="res://material_maker/windows/sdf_builder/gizmo_arrow.gd" id="1"]
@ -6,39 +6,23 @@
shading_mode = 0
albedo_color = Color(1, 0, 0, 1)
[sub_resource type="StandardMaterial3D" id="1"]
resource_name = "None"
albedo_color = Color(0.8, 0.8, 0.8, 1)
metallic = 0.8
[sub_resource type="CylinderMesh" id="CylinderMesh_mevst"]
top_radius = 0.025
bottom_radius = 0.025
height = 0.9
radial_segments = 12
rings = 1
[sub_resource type="ArrayMesh" id="6"]
_surfaces = [{
"aabb": AABB(0, 0, 0, 0, 0, 0),
"format": 34359738368,
"material": SubResource("1"),
"name": "None",
"primitive": 5,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 0,
"vertex_data": PackedByteArray()
}]
[sub_resource type="CylinderMesh" id="CylinderMesh_ujfrw"]
top_radius = 0.0
bottom_radius = 0.05
height = 0.155
radial_segments = 12
rings = 1
[sub_resource type="StandardMaterial3D" id="7"]
resource_name = "None"
albedo_color = Color(0.8, 0.8, 0.8, 1)
metallic = 0.8
[sub_resource type="ArrayMesh" id="8"]
_surfaces = [{
"aabb": AABB(0, 0, 0, 0, 0, 0),
"format": 34359738368,
"material": SubResource("7"),
"name": "None",
"primitive": 5,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 0,
"vertex_data": PackedByteArray()
}]
[sub_resource type="TorusMesh" id="TorusMesh_33igc"]
inner_radius = 0.475
outer_radius = 0.525
[sub_resource type="CylinderShape3D" id="4"]
margin = 0.01
@ -53,14 +37,22 @@ script = ExtResource("1")
material = SubResource("3")
[node name="Arrow" type="MeshInstance3D" parent="."]
mesh = SubResource("6")
transform = Transform3D(-4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0, 1, 0.45, 0, 0)
mesh = SubResource("CylinderMesh_mevst")
skeleton = NodePath("../..")
material/0 = SubResource("3")
surface_material_override/0 = SubResource("3")
[node name="Tip" type="MeshInstance3D" parent="Arrow"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.07646e-08, 0.47504, 0)
mesh = SubResource("CylinderMesh_ujfrw")
skeleton = NodePath("../../..")
surface_material_override/0 = SubResource("3")
[node name="Torus" type="MeshInstance3D" parent="."]
mesh = SubResource("8")
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
mesh = SubResource("TorusMesh_33igc")
skeleton = NodePath("../..")
material/0 = SubResource("3")
surface_material_override/0 = SubResource("3")
[node name="TranslateArea" type="Area3D" parent="."]
input_capture_on_drag = true

View File

@ -7,7 +7,7 @@ var view_style : int = 0
func generate_preview_shader(source : MMGenBase.ShaderCode, _template) -> String:
var variables : Dictionary = {}
variables.GENERATED_GLOBALS = source.uniforms_as_strings()
variables.GENERATED_GLOBALS += "\n".join(PackedStringArray(source.globals))
variables.GENERATED_GLOBALS += source.get_globals_string()
variables.GENERATED_INSTANCE = source.defs
variables.GENERATED_CODE = source.code
if source.output_type == "sdf2d":

View File

@ -43,7 +43,7 @@ func set_generator(g : MMGenBase, o : int = 0, force : bool = false) -> void:
var material = plane.get_surface_override_material(0)
var variables : Dictionary = {}
variables.GENERATED_GLOBALS = source.uniforms_as_strings()
variables.GENERATED_GLOBALS += "\n".join(PackedStringArray(source.globals))
variables.GENERATED_GLOBALS += source.get_globals_string()
variables.GENERATED_INSTANCE = source.defs
variables.GENERATED_CODE = source.code
variables.GENERATED_OUTPUT = source.output_values.sdf3d
@ -52,10 +52,11 @@ func set_generator(g : MMGenBase, o : int = 0, force : bool = false) -> void:
variables.COLOR_FCT = node_prefix+"_c"
variables.INDEX_UNIFORM = "p_"+node_prefix+"_index"
var shader_code : String = mm_preprocessor.preprocess_file("res://material_maker/windows/sdf_builder/preview_3d.gdshader", variables)
material = mm_deps.buffer_create_shader_material("preview_"+str(get_instance_id()), MMShaderMaterial.new(material), shader_code)
for u in source.uniforms:
if u.value:
material.set_shader_parameter(u.name, u.value)
material = await mm_deps.buffer_create_shader_material("preview_"+str(get_instance_id()), MMShaderMaterial.new(material), shader_code)
if material:
for u in source.uniforms:
if u.value:
material.set_shader_parameter(u.name, u.value)
var setup_controls_filter : String = ""
func setup_controls(filter : String = "") -> void: