new method of creating preview

This commit is contained in:
Nikolai Fesenko
2025-08-15 20:35:27 +02:00
parent 3b540e019b
commit 5c71f036af
5 changed files with 45 additions and 62 deletions

View File

@@ -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()