diff --git a/Scenes/Prefabs/DoubleBeds.tscn b/Scenes/Prefabs/DoubleBeds.tscn index 94a40b7..07ca86c 100644 --- a/Scenes/Prefabs/DoubleBeds.tscn +++ b/Scenes/Prefabs/DoubleBeds.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://0t0cvsitlfmm"] +[gd_scene load_steps=11 format=3 uid="uid://0t0cvsitlfmm"] [ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_nn5da"] [ext_resource type="ArrayMesh" uid="uid://cahq2fdeqqwhx" path="res://Blends/Mobel/DoubleBeds.obj" id="2_8ssp7"] @@ -10,20 +10,7 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_dn7et"] render_priority = 0 shader = ExtResource("3_pdq8c") -shader_parameter/alpha = 0.5 -shader_parameter/color = Vector3(0, 1, 0) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_sp2kd"] -render_priority = 0 -shader = ExtResource("3_pdq8c") -shader_parameter/alpha = 0.5 -shader_parameter/color = Vector3(0, 1, 0) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_c1046"] -render_priority = 0 -shader = ExtResource("3_pdq8c") -shader_parameter/alpha = 0.5 -shader_parameter/color = Vector3(0, 1, 0) +shader_parameter/color = Vector3(0, 0, 0) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c1046"] albedo_texture = ExtResource("3_nn5da") @@ -35,26 +22,10 @@ albedo_texture = ExtResource("5_sp2kd") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tma46"] albedo_texture = ExtResource("5_sp2kd") -[sub_resource type="ShaderMaterial" id="ShaderMaterial_k1k40"] -render_priority = 0 -shader = ExtResource("3_pdq8c") -shader_parameter/alpha = 0.5 -shader_parameter/color = Vector3(1, 0, 0) - -[node name="DoubleBeds" type="Node3D" node_paths=PackedStringArray("meshInstance", "greenMeshInstance", "RedMeshInstance")] +[node name="DoubleBeds" type="Node3D" node_paths=PackedStringArray("meshInstance")] script = ExtResource("1_nn5da") meshInstance = NodePath("DoubleBeds") -greenMeshInstance = NodePath("Green_preview") -RedMeshInstance = NodePath("Red_preview") - -[node name="Green_preview" type="MeshInstance3D" parent="."] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0) -visible = false -mesh = ExtResource("2_8ssp7") -skeleton = NodePath("../DoubleBeds") -surface_material_override/0 = SubResource("ShaderMaterial_dn7et") -surface_material_override/1 = SubResource("ShaderMaterial_sp2kd") -surface_material_override/2 = SubResource("ShaderMaterial_c1046") +preview_shader = SubResource("ShaderMaterial_dn7et") [node name="DoubleBeds" type="MeshInstance3D" parent="."] transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, -0.42751, 0) @@ -62,11 +33,3 @@ mesh = ExtResource("2_8ssp7") surface_material_override/0 = SubResource("StandardMaterial3D_c1046") surface_material_override/1 = SubResource("StandardMaterial3D_k1k40") surface_material_override/2 = SubResource("StandardMaterial3D_tma46") - -[node name="Red_preview" type="MeshInstance3D" parent="."] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0) -visible = false -mesh = ExtResource("2_8ssp7") -surface_material_override/0 = SubResource("ShaderMaterial_k1k40") -surface_material_override/1 = SubResource("ShaderMaterial_k1k40") -surface_material_override/2 = SubResource("ShaderMaterial_k1k40") diff --git a/Scenes/Prefabs/Pot.tscn b/Scenes/Prefabs/Pot.tscn index 3451bdf..ac505a8 100644 --- a/Scenes/Prefabs/Pot.tscn +++ b/Scenes/Prefabs/Pot.tscn @@ -1,13 +1,20 @@ -[gd_scene load_steps=11 format=3 uid="uid://bcme5mx8nf5kf"] +[gd_scene load_steps=14 format=3 uid="uid://bcme5mx8nf5kf"] +[ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_c5d30"] [ext_resource type="ArrayMesh" uid="uid://dqs5joeucls8u" path="res://Blends/Pot/pot.obj" id="1_ps8qt"] [ext_resource type="Texture2D" uid="uid://c4cvsuxeqt068" path="res://Blends/Pot/pot_metal.jpg" id="2_c5d30"] +[ext_resource type="Shader" uid="uid://bfv6ckihralab" path="res://Shaders/build_transparent.gdshader" id="2_ocdig"] [ext_resource type="Texture2D" uid="uid://fom8shxpn476" path="res://Blends/Pot/pot_brick.jpg" id="3_ocdig"] [ext_resource type="Texture2D" uid="uid://bw8k6hmfrwj60" path="res://Blends/Pot/rougness_m.png" id="4_vv7mx"] [ext_resource type="Texture2D" uid="uid://cdb7b2ef31ixv" path="res://Blends/Pot/pot_wood.jpg" id="5_gtq0i"] [ext_resource type="Texture2D" uid="uid://bxgm6oovlxdjq" path="res://Blends/Pot/wood_n.png" id="6_r71lq"] [ext_resource type="Texture2D" uid="uid://run700pxmcyc" path="res://Blends/Pot/brick_t.png" id="7_e7ek7"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vv7mx"] +render_priority = 0 +shader = ExtResource("2_ocdig") +shader_parameter/color = Vector3(0, 0, 0) + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dn6sd"] albedo_texture = ExtResource("2_c5d30") roughness = 0.4 @@ -24,8 +31,11 @@ normal_texture = ExtResource("6_r71lq") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rbvpf"] albedo_texture = ExtResource("7_e7ek7") -[node name="Pot" type="Node3D"] +[node name="Pot" type="Node3D" node_paths=PackedStringArray("meshInstance")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) +script = ExtResource("1_c5d30") +meshInstance = NodePath("Pot") +preview_shader = SubResource("ShaderMaterial_vv7mx") [node name="Pot" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.41814, 0) diff --git a/Scenes/Prefabs/cart.tscn b/Scenes/Prefabs/cart.tscn index 5b42d86..8c2f6e0 100644 --- a/Scenes/Prefabs/cart.tscn +++ b/Scenes/Prefabs/cart.tscn @@ -28,7 +28,6 @@ size = Vector3(5.40002, 3.46348, 2.28394) [sub_resource type="ShaderMaterial" id="ShaderMaterial_u7bw1"] render_priority = 0 shader = ExtResource("6_ru0md") -shader_parameter/alpha = 0.5 shader_parameter/color = Vector3(0, 0, 0) [node name="Cart" type="Node3D" node_paths=PackedStringArray("cartTop")] diff --git a/Scripts/build_object.gd b/Scripts/build_object.gd index df7915c..fad531c 100644 --- a/Scripts/build_object.gd +++ b/Scripts/build_object.gd @@ -2,36 +2,47 @@ extends Node3D @export var meshInstance: MeshInstance3D -@export var greenMeshInstance: MeshInstance3D -@export var RedMeshInstance: MeshInstance3D +@export var preview_shader: ShaderMaterial +var default_shaders: Array func _ready() -> void: Global.preview_created.connect(_on_preview_create) Global.object_placed.connect(_on_object_placed) + set_default_shaders() +func set_default_shaders(): + var amount_shaders = meshInstance.get_surface_override_material_count() + default_shaders.resize( amount_shaders) + + for i in amount_shaders: + default_shaders[i] = meshInstance.get_surface_override_material(i) + +func restore_default_shaders(): + for i in meshInstance.get_surface_override_material_count(): + meshInstance.set_surface_override_material(i,default_shaders[i]) + pass + +func set_preview_shader_color(): + if true: + set_green_color() + for i in meshInstance.get_surface_override_material_count(): + meshInstance.set_surface_override_material(i,preview_shader) + pass + func set_green_color(): - hide_mainMesh() - greenMeshInstance.visible = true + preview_shader.set_shader_parameter("color", Vector3(0,1.0,0)) func set_red_color(): - hide_mainMesh() - RedMeshInstance.visible = true + preview_shader.set_shader_parameter("color", Vector3(1.0,0,0)) + pass -func hide_mainMesh(): - meshInstance.visible = false -func show_mainMesh(): - meshInstance.visible = true - greenMeshInstance.visible = false - RedMeshInstance.visible = false func _on_preview_create(): - set_green_color() + set_preview_shader_color() func _on_object_placed(): - show_mainMesh() - greenMeshInstance.queue_free() - RedMeshInstance.queue_free() + restore_default_shaders() diff --git a/Shaders/build_transparent.gdshader b/Shaders/build_transparent.gdshader index 56b4d64..baa69e5 100644 --- a/Shaders/build_transparent.gdshader +++ b/Shaders/build_transparent.gdshader @@ -1,5 +1,5 @@ shader_type spatial; -uniform float alpha; +//uniform float alpha; uniform vec3 color; void vertex() { @@ -8,7 +8,7 @@ void vertex() { void fragment() { ALBEDO = color; - ALPHA = alpha; + ALPHA = 0.5; } //void light() {