mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-09 14:25:54 +00:00
71 lines
No EOL
2.8 KiB
GDScript
71 lines
No EOL
2.8 KiB
GDScript
extends PanelContainer
|
|
|
|
@export var vision_cone : VisionCone3D
|
|
@export var cameras : Array[Camera3D] = []
|
|
|
|
@onready var vision_test_center_checkbox : CheckBox = %VisionTestCenterCheckBox
|
|
@onready var vision_test_scatter_checkbox : CheckBox = %VisionTestScatterCheckBox
|
|
@onready var raycast_count_slider : Slider = %RaycastsPerFrameSlider
|
|
@onready var angle_slider : Slider = %AngleSlider
|
|
@onready var range_slider : Slider = %RangeSlider
|
|
@onready var rotation_slider : Slider = %ObserverRotationSlider
|
|
@onready var position_slider : Slider = %ObserverPositionSlider
|
|
@onready var max_bodies_slider : Slider = %MaxBodiesSlider
|
|
@onready var switch_camera_button : Button = %SwitchCameraButton
|
|
|
|
func _ready():
|
|
vision_test_center_checkbox.toggled.connect(_set_center)
|
|
vision_test_scatter_checkbox.toggled.connect(_set_scatter)
|
|
raycast_count_slider.value_changed.connect(func(value: float): vision_cone.vision_test_shape_max_probe_count = value)
|
|
angle_slider.value_changed.connect(func(value: float): vision_cone.angle = value)
|
|
range_slider.value_changed.connect(func(value: float): vision_cone.range = value)
|
|
rotation_slider.value_changed.connect(func(value: float): vision_cone.get_parent().rotation_degrees.y = -value)
|
|
position_slider.value_changed.connect(func(value: float): vision_cone.get_parent().position.x = value)
|
|
max_bodies_slider.value_changed.connect(func(value: float): vision_cone.vision_test_max_body_count = value)
|
|
if cameras.is_empty():
|
|
switch_camera_button.hide()
|
|
else:
|
|
cameras[0].current = true
|
|
switch_camera_button.text = "Current Camera: " + cameras[0].name
|
|
switch_camera_button.pressed.connect(
|
|
func():
|
|
for i in cameras.size():
|
|
var cam := cameras[i]
|
|
if cam.current:
|
|
cam.current = false
|
|
var next_cam : Camera3D
|
|
if (i + 1) < cameras.size():
|
|
next_cam = cameras[i + 1]
|
|
else:
|
|
next_cam = cameras[0]
|
|
next_cam.current = true
|
|
switch_camera_button.text = "Current Camera: " + next_cam.name
|
|
return
|
|
)
|
|
|
|
angle_slider.value = vision_cone.angle
|
|
range_slider.value = vision_cone.range
|
|
max_bodies_slider.value = vision_cone.vision_test_max_body_count
|
|
raycast_count_slider.value = vision_cone.vision_test_shape_max_probe_count
|
|
|
|
if vision_cone.get_parent() is CharacterBody3D:
|
|
vision_cone.get_parent().rotation_degrees.y = -rotation_slider.value
|
|
vision_cone.get_parent().position.x = position_slider.value
|
|
else:
|
|
rotation_slider.get_parent().hide()
|
|
position_slider.get_parent().hide()
|
|
|
|
_set_center(vision_test_center_checkbox.button_pressed)
|
|
_set_scatter(vision_test_scatter_checkbox.button_pressed)
|
|
|
|
size.y = 0
|
|
|
|
func _set_center(value: bool):
|
|
if !value:
|
|
return
|
|
vision_cone.vision_test_mode = VisionCone3D.VisionTestMode.SAMPLE_CENTER
|
|
|
|
func _set_scatter(value: bool):
|
|
if !value:
|
|
return
|
|
vision_cone.vision_test_mode = VisionCone3D.VisionTestMode.SAMPLE_RANDOM_VERTICES |