fix collision and hover issue

This commit is contained in:
Lucas Peter 2024-07-31 18:04:21 +02:00
parent d520cd58b9
commit d3b3dcfea0
No known key found for this signature in database
2 changed files with 13 additions and 3 deletions

View file

@ -46,7 +46,7 @@ func pointcast():
#region Fill hoveredColliders #region Fill hoveredColliders
for _object in CastResult: for _object in CastResult:
if(_object.collider.input_pickable == true): if(_object.collider.input_pickable == true):
hoveredColliders.append(_object.collider) #Get the object that have the collision hoveredColliders.append(_object.collider)
#endregion #endregion
if (hoveredColliders.size() > 0): if (hoveredColliders.size() > 0):
if (hoveredColliders.size() >= 2): if (hoveredColliders.size() >= 2):
@ -115,8 +115,10 @@ func grab_start():
func grab_end(): func grab_end():
if (grabbedStickerNode.has_method("on_released")): if (grabbedStickerNode.has_method("on_released")):
grabbedStickerNode.on_unhover()
grabbedStickerNode.on_released() grabbedStickerNode.on_released()
print("stopg grabbin at ",query.position ) print("stopg grabbin at ",query.position )
DebugDraw.points.append(query.position) DebugDraw.points.append(query.position)
DebugDraw.drawPoints() DebugDraw.drawPoints()

View file

@ -15,6 +15,13 @@ class_name Sticker extends Area2D
@export_group("Material") @export_group("Material")
@export var OutlineMat:ShaderMaterial = preload("res://shaders/shaderMaterial_Outline.tres") @export var OutlineMat:ShaderMaterial = preload("res://shaders/shaderMaterial_Outline.tres")
@export var Foiled:bool #TODO: Foil material and logic @export var Foiled:bool #TODO: Foil material and logic
@export var CreateShape:bool:
set(value):
var test = CollisionShape2D.new()
test.set_name("StickerShape")
add_child(test)
test.set_owner(get_tree().get_edited_scene_root())
test = null
var meta:PackedStringArray = ["sticker"] var meta:PackedStringArray = ["sticker"]
@ -48,7 +55,7 @@ func on_released(CastResult:Array=[]):
get_parent().reparent(MapManager.current_scene.get_child(0)) get_parent().reparent(MapManager.current_scene.get_child(0))
disable_ChildNodes_collisions(false) disable_ChildNodes_collisions(false)
update_ChildNodes_visibilty(true) update_ChildNodes_visibilty(true)
#on_unhover() # When released behind another sticker, sometimes cursor cannot reach
func on_click(): func on_click():
print(self," clicked") print(self," clicked")
@ -80,6 +87,7 @@ func on_grab(_offset:Vector2=Vector2(0.0,0.0)):
get_parent().top_level = true get_parent().top_level = true
get_parent().reparent(get_tree().root) get_parent().reparent(get_tree().root)
update_ChildNodes_visibilty(false) update_ChildNodes_visibilty(false)
disable_ChildNodes_collisions(true)
func update_ChildNodes_visibilty(_visible:bool=true): func update_ChildNodes_visibilty(_visible:bool=true):
for _childNode in get_parent().get_children(): for _childNode in get_parent().get_children():
@ -88,5 +96,5 @@ func update_ChildNodes_visibilty(_visible:bool=true):
func disable_ChildNodes_collisions(_disable:bool=true): func disable_ChildNodes_collisions(_disable:bool=true):
for _childNode in get_parent().get_children(): for _childNode in get_parent().get_children():
_childNode.set_deferred("disabled",_disable) _childNode.process_mode = Node.PROCESS_MODE_DISABLED if _disable else Node.PROCESS_MODE_ALWAYS