From d3b3dcfea09da6abfe2fd2d7dfd098785eb6da0d Mon Sep 17 00:00:00 2001 From: Lucas Peter Date: Wed, 31 Jul 2024 18:04:21 +0200 Subject: [PATCH] fix collision and hover issue --- core/Cursor.gd | 4 +++- core/{Sticker.gd => stickernode.gd} | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) rename core/{Sticker.gd => stickernode.gd} (85%) diff --git a/core/Cursor.gd b/core/Cursor.gd index 5a23098..dd4f65c 100644 --- a/core/Cursor.gd +++ b/core/Cursor.gd @@ -46,7 +46,7 @@ func pointcast(): #region Fill hoveredColliders for _object in CastResult: if(_object.collider.input_pickable == true): - hoveredColliders.append(_object.collider) #Get the object that have the collision + hoveredColliders.append(_object.collider) #endregion if (hoveredColliders.size() > 0): if (hoveredColliders.size() >= 2): @@ -115,7 +115,9 @@ func grab_start(): func grab_end(): if (grabbedStickerNode.has_method("on_released")): + grabbedStickerNode.on_unhover() grabbedStickerNode.on_released() + print("stopg grabbin at ",query.position ) DebugDraw.points.append(query.position) diff --git a/core/Sticker.gd b/core/stickernode.gd similarity index 85% rename from core/Sticker.gd rename to core/stickernode.gd index b870887..650b722 100644 --- a/core/Sticker.gd +++ b/core/stickernode.gd @@ -15,6 +15,13 @@ class_name Sticker extends Area2D @export_group("Material") @export var OutlineMat:ShaderMaterial = preload("res://shaders/shaderMaterial_Outline.tres") @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"] @@ -48,7 +55,7 @@ func on_released(CastResult:Array=[]): get_parent().reparent(MapManager.current_scene.get_child(0)) disable_ChildNodes_collisions(false) update_ChildNodes_visibilty(true) - + #on_unhover() # When released behind another sticker, sometimes cursor cannot reach func on_click(): print(self," clicked") @@ -80,6 +87,7 @@ func on_grab(_offset:Vector2=Vector2(0.0,0.0)): get_parent().top_level = true get_parent().reparent(get_tree().root) update_ChildNodes_visibilty(false) + disable_ChildNodes_collisions(true) func update_ChildNodes_visibilty(_visible:bool=true): 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): 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