init
This commit is contained in:
134
addons/godot-xr-tools/events/pointer_event.gd
Normal file
134
addons/godot-xr-tools/events/pointer_event.gd
Normal file
@@ -0,0 +1,134 @@
|
||||
class_name XRToolsPointerEvent
|
||||
|
||||
## Types of pointer events
|
||||
enum Type {
|
||||
## Pointer entered target
|
||||
ENTERED,
|
||||
|
||||
## Pointer exited target
|
||||
EXITED,
|
||||
|
||||
## Pointer pressed target
|
||||
PRESSED,
|
||||
|
||||
## Pointer released target
|
||||
RELEASED,
|
||||
|
||||
## Pointer moved on target
|
||||
MOVED
|
||||
}
|
||||
|
||||
## Type of pointer event
|
||||
var event_type : Type
|
||||
|
||||
## Pointer generating event
|
||||
var pointer : Node3D
|
||||
|
||||
## Target of pointer
|
||||
var target : Node3D
|
||||
|
||||
## Point position
|
||||
var position : Vector3
|
||||
|
||||
## Last point position
|
||||
var last_position : Vector3
|
||||
|
||||
|
||||
## Initialize a new instance of the XRToolsPointerEvent class
|
||||
func _init(
|
||||
p_event_type : Type,
|
||||
p_pointer : Node3D,
|
||||
p_target : Node3D,
|
||||
p_position : Vector3,
|
||||
p_last_position : Vector3) -> void:
|
||||
event_type = p_event_type
|
||||
pointer = p_pointer
|
||||
target = p_target
|
||||
position = p_position
|
||||
last_position = p_last_position
|
||||
|
||||
|
||||
## Report a pointer entered event
|
||||
static func entered(
|
||||
pointer : Node3D,
|
||||
target : Node3D,
|
||||
at : Vector3) -> void:
|
||||
report(
|
||||
XRToolsPointerEvent.new(
|
||||
Type.ENTERED,
|
||||
pointer,
|
||||
target,
|
||||
at,
|
||||
at))
|
||||
|
||||
|
||||
## Report pointer moved event
|
||||
static func moved(
|
||||
pointer : Node3D,
|
||||
target : Node3D,
|
||||
to : Vector3,
|
||||
from : Vector3) -> void:
|
||||
report(
|
||||
XRToolsPointerEvent.new(
|
||||
Type.MOVED,
|
||||
pointer,
|
||||
target,
|
||||
to,
|
||||
from))
|
||||
|
||||
|
||||
## Report pointer pressed event
|
||||
static func pressed(
|
||||
pointer : Node3D,
|
||||
target : Node3D,
|
||||
at : Vector3) -> void:
|
||||
report(
|
||||
XRToolsPointerEvent.new(
|
||||
Type.PRESSED,
|
||||
pointer,
|
||||
target,
|
||||
at,
|
||||
at))
|
||||
|
||||
|
||||
## Report pointer released event
|
||||
static func released(
|
||||
pointer : Node3D,
|
||||
target : Node3D,
|
||||
at : Vector3) -> void:
|
||||
report(
|
||||
XRToolsPointerEvent.new(
|
||||
Type.RELEASED,
|
||||
pointer,
|
||||
target,
|
||||
at,
|
||||
at))
|
||||
|
||||
|
||||
## Report a pointer exited event
|
||||
static func exited(
|
||||
pointer : Node3D,
|
||||
target : Node3D,
|
||||
last : Vector3) -> void:
|
||||
report(
|
||||
XRToolsPointerEvent.new(
|
||||
Type.EXITED,
|
||||
pointer,
|
||||
target,
|
||||
last,
|
||||
last))
|
||||
|
||||
|
||||
## Report a pointer event
|
||||
static func report(event : XRToolsPointerEvent) -> void:
|
||||
# Fire event on pointer
|
||||
if is_instance_valid(event.pointer):
|
||||
if event.pointer.has_signal("pointing_event"):
|
||||
event.pointer.emit_signal("pointing_event", event)
|
||||
|
||||
# Fire event/method on the target if it's valid
|
||||
if is_instance_valid(event.target):
|
||||
if event.target.has_signal("pointer_event"):
|
||||
event.target.emit_signal("pointer_event", event)
|
||||
elif event.target.has_method("pointer_event"):
|
||||
event.target.pointer_event(event)
|
||||
1
addons/godot-xr-tools/events/pointer_event.gd.uid
Normal file
1
addons/godot-xr-tools/events/pointer_event.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bpvc61v8e2vlm
|
||||
Reference in New Issue
Block a user