summaryrefslogtreecommitdiff
path: root/demos/viewport/gui_in_3d/gui_3d.gd
blob: 5309db9acb71e9735b51f021ece3033477d04679 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

extends Spatial

# member variables here, example:
# var a=2
# var b="textvar"

var prev_pos=null

func _input(ev):
	if (ev.type in [InputEvent.MOUSE_BUTTON,InputEvent.MOUSE_MOTION]):
		var pos = ev.pos
		var rfrom = get_node("camera").project_ray_origin(pos)
		var rnorm = get_node("camera").project_ray_normal(pos)
		
		#simple collision test against aligned plane
		#for game UIs of this kind consider more complex collision against plane
		var p = Plane(Vector3(0,0,1),0).intersects_ray(rfrom,rnorm)
		if (p==null):
			return
			
		pos.x=(p.x+1.5)*100
		pos.y=(-p.y+0.75)*100
		ev.pos=pos
		ev.global_pos=pos
		if (prev_pos==null):
			prev_pos=pos
		if (ev.type==InputEvent.MOUSE_MOTION):
			ev.relative_pos=pos-prev_pos
		prev_pos=pos
		
	get_node("viewport").input(ev)
		
		
	

func _ready():
	# Initalization here
	get_node("quad").get_material_override().set_texture(FixedMaterial.PARAM_DIFFUSE, get_node("viewport").get_render_target_texture() )
	set_process_input(true)
	
	pass