tecMTST / modelo-godot-3.6

https://tecmtst.github.io/modelo-godot-3.6/
3 stars 0 forks source link

ControleBaseTouch #22

Closed rodigu closed 1 month ago

rodigu commented 4 months ago

Relações

Interfaces

Sinais

Variáveis

Funções

Efeitos Colaterais

Referências

rodigu commented 4 months ago

Seria bom privar (_) a variavel de historia e ter uma funcao que retorna um vector2 em certo ponto do historico?

class_name TouchDrag
extends Node

signal touch_start
signal touch_released

export var history_length = 5

var history = []
onready var pos_modifier = get_viewport().get_visible_rect().size * .5

func _input(event):
    if event is InputEventScreenTouch:
        if event.pressed:
            emit_signal("touch_start")
        else:
            emit_signal("touch_released")

func _process(delta):
    history.append(get_viewport().get_mouse_position() - pos_modifier)
    if len(history) > history_length:
        history.pop_front()

func get_last_position():
    if len(history) == 0:
        return null
    return history[-1]
ClockWritesDev commented 4 months ago

Pelo que entendi ele guarda com um append as posições que você acabou de executar no viewport: history.append(get_viewport().get_mouse_position() - pos_modifier)

Esse history contem dentro da array(lista) os vetores 2d da posição de onde o "mouse" passou, já que todo viewport é considerado 2d por padrão. Porém acabei de ver que existe uma array apenas para vetores 2d referência: https://docs.godotengine.org/en/3.6/classes/class_poolvector2array.html#class-poolvector2array

TIRADO DO SITE DO GODOT DOCUMENTATION...
var array = [PoolVector2Array()]
array[0].push_back(Vector2(12, 34))
print(array)  # [[]] (empty PoolVector2Array within an Array)

eu acho que transformar em uma variável privada não faria muita diferença só deixaria o processo de atribuição dela mais dificil pois teria sempre que referênciar ela nas func privadas.