gui_3d.gd 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. extends Spatial
  2. # Member variables
  3. var prev_pos = null
  4. func _input(event):
  5. # All other (non-mouse) events
  6. if (not event.type in [InputEvent.MOUSE_BUTTON, InputEvent.MOUSE_MOTION, InputEvent.SCREEN_DRAG, InputEvent.SCREEN_TOUCH]):
  7. get_node("viewport").input(event)
  8. # Mouse events for Area
  9. func _on_area_input_event(camera, event, click_pos, click_normal, shape_idx):
  10. # Use click pos (click in 3d space, convert to area space)
  11. var pos = get_node("area").get_global_transform().affine_inverse()*click_pos
  12. # Convert to 2D
  13. pos = Vector2(pos.x, pos.y)
  14. # Convert to viewport coordinate system
  15. pos.x = (pos.x + 1.5)*100
  16. pos.y = (-pos.y + 0.75)*100
  17. # Set to event
  18. event.pos = pos
  19. event.global_pos = pos
  20. if (prev_pos == null):
  21. prev_pos = pos
  22. if (event.type == InputEvent.MOUSE_MOTION):
  23. event.relative_pos = pos - prev_pos
  24. prev_pos = pos
  25. # Send the event to the viewport
  26. get_node("viewport").input(event)
  27. func _ready():
  28. get_node("area/quad").get_material_override().set_texture(FixedMaterial.PARAM_DIFFUSE, get_node("viewport").get_render_target_texture())
  29. set_process_input(true)