diff options
Diffstat (limited to 'demos/viewport/gui_in_3d')
-rw-r--r-- | demos/viewport/gui_in_3d/engine.cfg | 4 | ||||
-rw-r--r-- | demos/viewport/gui_in_3d/gui.scn | bin | 0 -> 2270 bytes | |||
-rw-r--r-- | demos/viewport/gui_in_3d/gui_3d.gd | 44 | ||||
-rw-r--r-- | demos/viewport/gui_in_3d/gui_3d.scn | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000000..4d665226b7 --- /dev/null +++ b/demos/viewport/gui_in_3d/gui.scn 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 Binary files differnew file mode 100644 index 0000000000..df8f7d6dc5 --- /dev/null +++ b/demos/viewport/gui_in_3d/gui_3d.scn |