51 lines
2.1 KiB
GDScript
51 lines
2.1 KiB
GDScript
@tool
|
|
extends Node3D
|
|
|
|
var dungeon_generator : DungeonGenerator3D = null
|
|
var wireframe_cube : Node3D = null
|
|
var debug_alert : Node3D = null
|
|
|
|
func update_visual():
|
|
var show_editor = Engine.is_editor_hint() and dungeon_generator.show_debug_in_editor
|
|
var show_game = not Engine.is_editor_hint() and dungeon_generator.show_debug_in_game
|
|
if not show_editor and not show_game:
|
|
if wireframe_cube and is_instance_valid(wireframe_cube):
|
|
remove_child(wireframe_cube)
|
|
wireframe_cube.queue_free()
|
|
wireframe_cube = null
|
|
if debug_alert and is_instance_valid(debug_alert):
|
|
remove_child(debug_alert)
|
|
debug_alert.queue_free()
|
|
debug_alert = null
|
|
return
|
|
|
|
if not wireframe_cube or not is_instance_valid(wireframe_cube):
|
|
wireframe_cube = preload("res://addons/SimpleDungeons/debug_visuals/WireframeCube.tscn").instantiate()
|
|
wireframe_cube.enable_depth_test = true
|
|
add_child(wireframe_cube)
|
|
wireframe_cube.scale = Vector3(dungeon_generator.dungeon_size) * dungeon_generator.voxel_scale
|
|
wireframe_cube.grid_size = dungeon_generator.dungeon_size
|
|
|
|
if not debug_alert or not is_instance_valid(debug_alert):
|
|
debug_alert = preload("res://addons/SimpleDungeons/debug_visuals/DebugAlert.tscn").instantiate()
|
|
add_child(debug_alert)
|
|
|
|
debug_alert.scale = Vector3(dungeon_generator.voxel_scale.y/5.0, dungeon_generator.voxel_scale.y/5.0, dungeon_generator.voxel_scale.y/5.0)
|
|
debug_alert.position = ((Vector3(dungeon_generator.dungeon_size) / 2) + Vector3(0,0.35,0)) * Vector3(0, dungeon_generator.voxel_scale.y, 0)
|
|
|
|
var err_warning = {"error": "", "warning": ""} # Closure won't capture normal vars
|
|
dungeon_generator.validate_dungeon(
|
|
(func(str):
|
|
err_warning["error"] = "Error: " + str),
|
|
(func(str): err_warning["warning"] = "Warning: " + str))
|
|
debug_alert.text = err_warning["error"] if err_warning["error"] else err_warning["warning"]
|
|
if not debug_alert.text: debug_alert.position = Vector3() # Fix AABB visual in editor
|
|
|
|
func _ready():
|
|
dungeon_generator = get_parent()
|
|
update_visual.call_deferred() # Call after parent _ready()
|
|
set_process_input(false)
|
|
|
|
func _process(_delta):
|
|
update_visual()
|