gui_3d.gd 991 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. extends Spatial
  2. # member variables here, example:
  3. # var a=2
  4. # var b="textvar"
  5. var prev_pos=null
  6. func _input(ev):
  7. if (ev.type in [InputEvent.MOUSE_BUTTON,InputEvent.MOUSE_MOTION]):
  8. var pos = ev.pos
  9. var rfrom = get_node("camera").project_ray_origin(pos)
  10. var rnorm = get_node("camera").project_ray_normal(pos)
  11. #simple collision test against aligned plane
  12. #for game UIs of this kind consider more complex collision against plane
  13. var p = Plane(Vector3(0,0,1),0).intersects_ray(rfrom,rnorm)
  14. if (p==null):
  15. return
  16. pos.x=(p.x+1.5)*100
  17. pos.y=(-p.y+0.75)*100
  18. ev.pos=pos
  19. ev.global_pos=pos
  20. if (prev_pos==null):
  21. prev_pos=pos
  22. if (ev.type==InputEvent.MOUSE_MOTION):
  23. ev.relative_pos=pos-prev_pos
  24. prev_pos=pos
  25. get_node("viewport").input(ev)
  26. func _ready():
  27. # Initalization here
  28. get_node("quad").get_material_override().set_texture(FixedMaterial.PARAM_DIFFUSE, get_node("viewport").get_render_target_texture() )
  29. set_process_input(true)
  30. pass