summaryrefslogtreecommitdiff
path: root/demos/viewport/gui_in_3d
diff options
context:
space:
mode:
Diffstat (limited to 'demos/viewport/gui_in_3d')
-rw-r--r--demos/viewport/gui_in_3d/engine.cfg4
-rw-r--r--demos/viewport/gui_in_3d/gui.scnbin0 -> 2270 bytes
-rw-r--r--demos/viewport/gui_in_3d/gui_3d.gd44
-rw-r--r--demos/viewport/gui_in_3d/gui_3d.scnbin0 -> 3498 bytes
4 files changed, 48 insertions, 0 deletions
diff --git a/demos/viewport/gui_in_3d/engine.cfg b/demos/viewport/gui_in_3d/engine.cfg
new file mode 100644
index 0000000000..25a6636132
--- /dev/null
+++ b/demos/viewport/gui_in_3d/engine.cfg
@@ -0,0 +1,4 @@
+[application]
+
+name="GUI in 3D"
+main_scene="res://gui_3d.scn"
diff --git a/demos/viewport/gui_in_3d/gui.scn b/demos/viewport/gui_in_3d/gui.scn
new file mode 100644
index 0000000000..4d665226b7
--- /dev/null
+++ b/demos/viewport/gui_in_3d/gui.scn
Binary files differ
diff --git a/demos/viewport/gui_in_3d/gui_3d.gd b/demos/viewport/gui_in_3d/gui_3d.gd
new file mode 100644
index 0000000000..5309db9acb
--- /dev/null
+++ b/demos/viewport/gui_in_3d/gui_3d.gd
@@ -0,0 +1,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
+
+
diff --git a/demos/viewport/gui_in_3d/gui_3d.scn b/demos/viewport/gui_in_3d/gui_3d.scn
new file mode 100644
index 0000000000..df8f7d6dc5
--- /dev/null
+++ b/demos/viewport/gui_in_3d/gui_3d.scn
Binary files differ