Fix Y sorting and filter by type

This commit is contained in:
Lucas 2024-08-03 22:42:28 +02:00
parent 0be8633a7e
commit 4cf3eb166a

View file

@ -50,7 +50,7 @@ func pointcast():
#endregion #endregion
if (hoveredColliders.size() > 0): if (hoveredColliders.size() > 0):
if (hoveredColliders.size() >= 2): if (hoveredColliders.size() >= 2):
sortByPosY(hoveredColliders,false) hoveredColliders = sortByPosY(hoveredColliders,false)
if (hoveredColliders[0] != hoveredCollider): if (hoveredColliders[0] != hoveredCollider):
$GrabTimer.stop() $GrabTimer.stop()
if (hoveredCollider and hoveredCollider.has_method("on_unhover")): if (hoveredCollider and hoveredCollider.has_method("on_unhover")):
@ -81,13 +81,19 @@ func resetCast(bFull = false):
## Sort objects by parent's Y position ## Sort objects by parent's Y position
func sortByPosY(objects: Array, ascending_order: bool = true): func sortByPosY(objects: Array, ascending_order: bool = true):
var _tempArray :Array var _tempArray :Array
var _tempStickerArray :Array
_tempArray = objects _tempArray = objects
# Inline comparison function #filter stickers
for _collider in _tempArray:
if _collider is Sticker:
_tempStickerArray.append(_collider)
if _tempStickerArray.size() > 0:
_tempArray = _tempStickerArray
_tempArray.sort_custom(comparePosY) _tempArray.sort_custom(comparePosY)
# Reverse if descending order is required # Reverse if descending order is required
if not ascending_order: if not ascending_order:
_tempArray.reverse() _tempArray.reverse()
objects = _tempArray return _tempArray
func comparePosY(a, b): func comparePosY(a, b):
#print("Compare ",a," at ",a.position.y, " and ",b," at ",b.position.y ) #print("Compare ",a," at ",a.position.y, " and ",b," at ",b.position.y )