diff --git a/Scenes/Prefabs/DoubleBeds.tscn b/Scenes/Prefabs/DoubleBeds.tscn index dec0e9a..98bab77 100644 --- a/Scenes/Prefabs/DoubleBeds.tscn +++ b/Scenes/Prefabs/DoubleBeds.tscn @@ -1,11 +1,30 @@ -[gd_scene load_steps=9 format=3 uid="uid://0t0cvsitlfmm"] +[gd_scene load_steps=14 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"] [ext_resource type="Texture2D" uid="uid://84bnb4rnuhuq" path="res://Blends/Mobel/textures/double_bed_metal.png" id="3_nn5da"] +[ext_resource type="Shader" uid="uid://bfv6ckihralab" path="res://Shaders/build_transparent.gdshader" id="3_pdq8c"] [ext_resource type="Texture2D" uid="uid://lbbig7lpdun3" path="res://Blends/Mobel/textures/Material.003 Roughness.png" id="4_dn7et"] [ext_resource type="Texture2D" uid="uid://kl1jplui8wfq" path="res://Blends/Mobel/textures/Material.003 Base Color.png" id="5_sp2kd"] +[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) + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c1046"] albedo_texture = ExtResource("3_nn5da") roughness_texture = ExtResource("4_dn7et") @@ -16,8 +35,26 @@ albedo_texture = ExtResource("5_sp2kd") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tma46"] albedo_texture = ExtResource("5_sp2kd") -[node name="DoubleBeds" type="Node3D"] +[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")] 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") [node name="DoubleBeds" type="MeshInstance3D" parent="."] transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0) @@ -25,3 +62,11 @@ 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/cart.tscn b/Scenes/Prefabs/cart.tscn index c13e5df..a41b2b2 100644 --- a/Scenes/Prefabs/cart.tscn +++ b/Scenes/Prefabs/cart.tscn @@ -19,6 +19,7 @@ size = Vector3(5.40002, 4.29805, 2.28394) 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")] script = ExtResource("1_esjgi") diff --git a/Scripts/build_object.gd b/Scripts/build_object.gd index e0f3eca..df7915c 100644 --- a/Scripts/build_object.gd +++ b/Scripts/build_object.gd @@ -1,29 +1,37 @@ extends Node3D -var meshInstance: MeshInstance3D -var default_materials -#var build_material -@onready var build_material = load("res://Shaders/build_transparent.gdshader") +@export var meshInstance: MeshInstance3D +@export var greenMeshInstance: MeshInstance3D +@export var RedMeshInstance: MeshInstance3D + func _ready() -> void: - default_materials = Array() - meshInstance = $DoubleBeds - default_materials.resize(meshInstance.get_surface_override_material_count()) - set_default_materials() Global.preview_created.connect(_on_preview_create) - print(build_material) - -func set_default_materials(): - for i in meshInstance.get_surface_override_material_count(): - default_materials[i] = meshInstance.get_surface_override_material(i) + Global.object_placed.connect(_on_object_placed) func set_green_color(): - for i in meshInstance.get_surface_override_material_count(): - meshInstance.set_surface_override_material(i, Global.build_material) + hide_mainMesh() + greenMeshInstance.visible = true +func set_red_color(): + hide_mainMesh() + RedMeshInstance.visible = true +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() + + +func _on_object_placed(): + show_mainMesh() + greenMeshInstance.queue_free() + RedMeshInstance.queue_free() diff --git a/Scripts/building_area.gd b/Scripts/building_area.gd index b298d20..1054be2 100644 --- a/Scripts/building_area.gd +++ b/Scripts/building_area.gd @@ -45,6 +45,7 @@ func hide_preview(): func place_object(): is_placed = true buildTransparentPreivew.visible = false + Global.object_placed.emit() func _on_enter_build_mode(): if !is_placed: @@ -52,7 +53,3 @@ func _on_enter_build_mode(): func _on_exit_build_mode(): hide_preview() buildTransparentPreivew.visible = false - -func set_preview_material(): - #beds - pass diff --git a/Scripts/global_script.gd b/Scripts/global_script.gd index 219bbcd..376c5b7 100644 --- a/Scripts/global_script.gd +++ b/Scripts/global_script.gd @@ -1,6 +1,5 @@ extends Node3D @export var debugLabel1: Label -@onready var build_material = load("res://Shaders/build_transparent.gdshader") signal exit_build_mode signal enter_build_mode @@ -8,12 +7,11 @@ signal enter_build_mode signal preview_created signal preview_destroyed +signal object_placed + var build_mode: bool = false -func _ready() -> void: - build_material.set("alpha", 0.5) - func _input(event: InputEvent) -> void: if event.is_action_released("enter_build_mode"): if build_mode: diff --git a/Shaders/build_transparent.gdshader b/Shaders/build_transparent.gdshader index c0d9f72..56b4d64 100644 --- a/Shaders/build_transparent.gdshader +++ b/Shaders/build_transparent.gdshader @@ -1,11 +1,13 @@ shader_type spatial; uniform float alpha; +uniform vec3 color; + void vertex() { // Called for every vertex the material is visible on. } void fragment() { - ALBEDO = vec3(0,1.0,0); + ALBEDO = color; ALPHA = alpha; }