gui_3d.gd 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. #all other (non-mouse) events
  8. if (not ev.type in [InputEvent.MOUSE_BUTTON,InputEvent.MOUSE_MOTION,InputEvent.SCREEN_DRAG,InputEvent.SCREEN_TOUCH]):
  9. get_node("viewport").input(ev)
  10. #mouse events for area
  11. func _on_area_input_event( camera, ev, click_pos, click_normal, shape_idx ):
  12. #use click pos (click in 3d space, convert to area space
  13. var pos = get_node("area").get_global_transform().affine_inverse() * click_pos
  14. #convert to 2D
  15. pos = Vector2(pos.x,pos.y)
  16. #convert to viewport coordinate system
  17. pos.x=(pos.x+1.5)*100
  18. pos.y=(-pos.y+0.75)*100
  19. #set to event
  20. ev.pos=pos
  21. ev.global_pos=pos
  22. if (prev_pos==null):
  23. prev_pos=pos
  24. if (ev.type==InputEvent.MOUSE_MOTION):
  25. ev.relative_pos=pos-prev_pos
  26. prev_pos=pos
  27. get_node("viewport").input(ev)
  28. func _ready():
  29. # Initalization here
  30. get_node("area/quad").get_material_override().set_texture(FixedMaterial.PARAM_DIFFUSE, get_node("viewport").get_render_target_texture() )
  31. set_process_input(true)
  32. pass