gd: added input addon
This commit is contained in:
73
addons/guide/ui/renderers/touch/touch_renderer.gd
Normal file
73
addons/guide/ui/renderers/touch/touch_renderer.gd
Normal file
@ -0,0 +1,73 @@
|
||||
@tool
|
||||
extends GUIDEIconRenderer
|
||||
|
||||
const GUIDEInputTouchBase = preload("../../../inputs/guide_input_touch_base.gd")
|
||||
|
||||
@onready var _controls:Control = %Controls
|
||||
@onready var _1_finger:Control = %T1Finger
|
||||
@onready var _2_finger:Control = %T2Fingers
|
||||
@onready var _3_finger:Control = %T3Fingers
|
||||
@onready var _4_finger:Control = %T4Fingers
|
||||
@onready var _rotate:Control = %Rotate
|
||||
@onready var _zoom:Control = %Zoom
|
||||
|
||||
|
||||
@onready var _directions:Control = %Directions
|
||||
@onready var _horizontal:Control = %Horizontal
|
||||
@onready var _vertical:Control = %Vertical
|
||||
@onready var _axis2d:Control = %Axis2D
|
||||
|
||||
|
||||
|
||||
func supports(input:GUIDEInput) -> bool:
|
||||
return input is GUIDEInputTouchAxis1D or \
|
||||
input is GUIDEInputTouchAxis2D or \
|
||||
input is GUIDEInputTouchPosition or \
|
||||
input is GUIDEInputTouchAngle or \
|
||||
input is GUIDEInputTouchDistance
|
||||
|
||||
|
||||
|
||||
func render(input:GUIDEInput) -> void:
|
||||
for child in _controls.get_children():
|
||||
child.visible = false
|
||||
for child in _directions.get_children():
|
||||
child.visible = false
|
||||
|
||||
_directions.visible = false
|
||||
|
||||
if input is GUIDEInputTouchBase:
|
||||
match input.finger_count:
|
||||
2:
|
||||
_2_finger.visible = true
|
||||
3:
|
||||
_3_finger.visible = true
|
||||
4:
|
||||
_4_finger.visible = true
|
||||
_:
|
||||
# we have no icons for more than 4 fingers, so everything else gets
|
||||
# the 1 finger icon
|
||||
_1_finger.visible = true
|
||||
|
||||
if input is GUIDEInputTouchAxis2D:
|
||||
_directions.visible = true
|
||||
_axis2d.visible = true
|
||||
|
||||
if input is GUIDEInputTouchAxis1D:
|
||||
_directions.visible = true
|
||||
match input.axis:
|
||||
GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.X:
|
||||
_horizontal.visible = true
|
||||
GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.X:
|
||||
_vertical.visible = true
|
||||
|
||||
if input is GUIDEInputTouchDistance:
|
||||
_zoom.visible = true
|
||||
|
||||
if input is GUIDEInputTouchAngle:
|
||||
_rotate.visible = true
|
||||
|
||||
call("queue_sort")
|
||||
|
||||
func cache_key(input:GUIDEInput) -> String:
|
||||
return "1f4c5082-d419-465f-aba8-f889caaff335" + input.to_string()
|
Reference in New Issue
Block a user