1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
extends Spatial
var prev_pos = null
var panel = null
func _ready():
get_node("Area/Quad").get_material_override().set_texture(SpatialMaterial.DIFFUSE_LAMBERT, get_node("Viewport").get_texture())
self.panel = get_node("Viewport/CombinatorPanel")
set_process_input(true)
func _on_Area_input_event( camera, event, click_pos, click_normal, shape_idx ):
var pos = get_node("Area").get_global_transform().affine_inverse()*click_pos
# Convert to 2D
if pos.y <= 0.9 or pos.y >= 1.1:
return
pos.x = (pos.x + 1)*200
pos.z = (-pos.z + 1)*200
var pos2 = Vector2(pos.z, pos.x)
event.pos = pos2
event.global_pos = pos2
if self.prev_pos == null:
self.prev_pos = pos2
if event.type == InputEvent.MOUSE_MOTION:
event.relative_pos = pos2 - self.prev_pos
self.prev_pos = pos2
get_node("Viewport").input(event)
func _on_body_input_event( camera, event, click_pos, click_normal, shape_idx ):
if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT and event.is_pressed():
print("body")
var cam = get_tree().get_root().get_camera()
cam.select(self, get_node("point"))
func _on_panel_input_event( camera, event, click_pos, click_normal, shape_idx ):
if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT and event.is_pressed():
print("panel")
get_node("animation").play("click")
|