diff --git a/core/Cursor.gd b/core/Cursor.gd index 4c9464c..bac701f 100644 --- a/core/Cursor.gd +++ b/core/Cursor.gd @@ -8,6 +8,7 @@ var hoveredObjects : Array var hoveredObject var hoveredSticker var grabbedSticker +var grabbedStickerOffset enum CURSOR_STATE {DEFAULT, CLICK, GRAB, GRABBED} var currentCursorState:CURSOR_STATE = CURSOR_STATE.DEFAULT @@ -28,6 +29,8 @@ func _process(_delta): #endregion pointcast() cursor_look() + if (grabbedSticker): + grabbedSticker.position = grabbedStickerOffset+get_global_mouse_position() func isSticker(selectedObject:Node): @@ -117,10 +120,15 @@ func _input(rawInputEvent:InputEvent): grab_end() func grab_start(): - if (hoveredSticker): + if (hoveredSticker and grabbedSticker == null): grabbedSticker = hoveredSticker + print("Grabbed ", grabbedSticker) - + grabbedStickerOffset = grabbedSticker.position - get_global_mouse_position() + print("offset =", grabbedStickerOffset, " Stickpos:",grabbedSticker.position,"-",get_global_mouse_position() ) + if (grabbedSticker.has_method("on_grab")): + grabbedSticker.on_grab(grabbedStickerOffset) + func grab_end(): grabbedSticker.on_released() diff --git a/prefab/free_sticker.tscn b/prefab/free_sticker.tscn index 7e6c587..a072aa3 100644 --- a/prefab/free_sticker.tscn +++ b/prefab/free_sticker.tscn @@ -43,6 +43,9 @@ func on_hover(): func on_unhover(): material = null queue_redraw() + +func on_grab(_offset:Vector2=Vector2(0.0,0.0)): + pass " [node name="FreeSticker1" type="Sprite2D"]