virtualx-engine/demos/viewport/gui_in_3d/gui_3d.gd
Rémi Verschelde 8639cecf4c Improve code formatting and update to 2.0
The scripts were streamlined using more or less the following conventions:
 - space after a comma in lists of arguments
 - space around weak operators (+, -), no space around strong operators (*, /)
 - space after a comment start (#)
 - removed trailing spaces or tabs, apart from those that delimit the function indentation level (those could be removed too but since they are added automatically by the editor when typing code, keeping them for now)
 - function blocks separate by two newlines

The scene files were resaved with the (current) 2.0 format, and some scenes that were in XML format were converted to SCN, to be consistent across all demos.
2015-12-09 08:38:23 +01:00

38 lines
1.1 KiB
GDScript

extends Spatial
# member variables
var prev_pos = null
func _input(event):
# all other (non-mouse) events
if (not event.type in [InputEvent.MOUSE_BUTTON, InputEvent.MOUSE_MOTION, InputEvent.SCREEN_DRAG, InputEvent.SCREEN_TOUCH]):
get_node("viewport").input(event)
# mouse events for area
func _on_area_input_event(camera, event, click_pos, click_normal, shape_idx):
# use click pos (click in 3d space, convert to area space)
var pos = get_node("area").get_global_transform().affine_inverse()*click_pos
# convert to 2D
pos = Vector2(pos.x, pos.y)
# convert to viewport coordinate system
pos.x = (pos.x + 1.5)*100
pos.y = (-pos.y + 0.75)*100
# set to event
event.pos = pos
event.global_pos = pos
if (prev_pos == null):
prev_pos = pos
if (event.type == InputEvent.MOUSE_MOTION):
event.relative_pos = pos - prev_pos
prev_pos = pos
# sned the event to the viewport
get_node("viewport").input(event)
func _ready():
# Initalization here
get_node("area/quad").get_material_override().set_texture(FixedMaterial.PARAM_DIFFUSE, get_node("viewport").get_render_target_texture())
set_process_input(true)