material-maker/vr_screen.gd

34 lines
947 B
GDScript

extends Area
var prev_pos = null
var last_click_pos = null
var last_pos2d = null;
onready var viewport = $Viewport
func ui_raycast_hit_event(position, click, release):
# note: this transform assumes that the unscaled area is [-0.5, -0.5] to [0.5, 0.5] in size
var local_position = to_local(position);
var pos2d = Vector2(local_position.x, -local_position.y)
pos2d = pos2d + Vector2(0.5, 0.5)
pos2d.x *= viewport.size.x
pos2d.y *= viewport.size.y
if (click || release):
var e = InputEventMouseButton.new();
e.pressed = click;
e.button_index = BUTTON_LEFT;
e.position = pos2d;
e.global_position = pos2d;
viewport.input(e);
elif (last_pos2d != null && last_pos2d != pos2d):
var e = InputEventMouseMotion.new();
e.relative = pos2d - last_pos2d;
e.speed = (pos2d - last_pos2d) / 16.0; #?? chose an arbitrary scale here for now
e.global_position = pos2d;
e.position = pos2d;
viewport.input(e);
last_pos2d = pos2d;