2023-11-05 22:32:50 +02:00
|
|
|
@tool
|
|
|
|
extends Function
|
|
|
|
class_name Movable
|
|
|
|
|
2023-11-06 16:39:53 +02:00
|
|
|
var hit_node := Node3D.new()
|
2023-11-05 22:32:50 +02:00
|
|
|
|
2023-11-22 02:44:07 +02:00
|
|
|
func _on_grab_down(event: EventRay):
|
2023-11-06 16:39:53 +02:00
|
|
|
event.controller.add_child(hit_node)
|
2023-11-14 01:51:48 +02:00
|
|
|
hit_node.global_transform = get_parent().global_transform
|
2023-11-05 22:32:50 +02:00
|
|
|
|
2023-11-22 02:44:07 +02:00
|
|
|
func _on_grab_move(_event: EventRay):
|
2023-11-14 01:51:48 +02:00
|
|
|
get_parent().global_transform = hit_node.global_transform
|
|
|
|
|
2023-11-22 02:44:07 +02:00
|
|
|
func _on_grab_up(event: EventRay):
|
2023-11-14 01:51:48 +02:00
|
|
|
event.controller.remove_child(hit_node)
|
2023-11-05 22:32:50 +02:00
|
|
|
|
|
|
|
func _get_configuration_warnings() -> PackedStringArray:
|
|
|
|
var warnings := PackedStringArray()
|
|
|
|
|
|
|
|
if get_parent() is StaticBody3D == false:
|
|
|
|
warnings.append("Movable requires a StaticBody3D as parent.")
|
|
|
|
|
|
|
|
|
2023-11-06 16:39:53 +02:00
|
|
|
return warnings
|