mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-15 06:53:47 +00:00
3D Cameras with sweep and animation
This commit is contained in:
parent
4cc7a0c004
commit
7e76edc153
48 changed files with 3211 additions and 1511 deletions
|
|
@ -0,0 +1,71 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue