Added "Base Rotation" to Editor and Save/Load

Essentially this lets you rotate parts in-editor. Hold "I" and press A or D to rotate left or right. This has zero effect on rotation drag and is done independently.
This commit is contained in:
FBI-Donut 2024-08-02 01:34:03 -04:00
parent 3173b21368
commit f522cd7698
6 changed files with 166 additions and 129 deletions

View file

@ -356,6 +356,8 @@ func _on_load_dialog_file_selected(path):
sprite.clipped = data[item]["clipped"]
if data[item].has("toggle"):
sprite.toggle = data[item]["toggle"]
if data[item].has("baseRotation"):
sprite.rotation = data[item]["baseRotation"]
origin.add_child(sprite)
sprite.position = str_to_var(data[item]["pos"])
@ -414,6 +416,7 @@ func _on_save_dialog_file_selected(path):
data[id]["clipped"] = child.clipped
data[id]["toggle"] = child.toggle
data[id]["baseRotation"] = child.rotation
id += 1

File diff suppressed because one or more lines are too long

View file

@ -39,6 +39,7 @@ gdscript/warnings/unused_parameter=0
window/size/viewport_width=1280
window/size/viewport_height=720
window/size/always_on_top=true
window/size/transparent=true
window/per_pixel_transparency/allowed=true
window/vsync/vsync_mode=0
@ -140,6 +141,11 @@ saveImages={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":76,"key_label":0,"unicode":108,"echo":false,"script":null)
]
}
rotate={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":73,"key_label":0,"unicode":105,"echo":false,"script":null)
]
}
[rendering]

View file

@ -271,11 +271,29 @@ func _physics_process(delta):
var dir = pressingDirection()
if Input.is_action_pressed("origin"):
moveOrigin(dir)
elif Input.is_action_pressed("rotate"):
rotateSprite(dir)
else:
moveSprite(dir)
else:
set_physics_process(false)
func rotateSprite(dir) -> void:
if dir != Vector2.ZERO:
heldTicks += 1
else:
heldTicks = 0
if heldTicks > 30 or heldTicks == 1:
var multiplier = 2
if heldTicks == 1:
multiplier = 1
rotation -= deg_to_rad(dir.x * multiplier)
if rad_to_deg(rotation) >= 360:
rotation = 0
elif rad_to_deg(rotation) <= -360:
rotation = 0
func pressingDirection():
var dir = Vector2.ZERO
@ -284,6 +302,7 @@ func pressingDirection():
return dir
func moveSprite(dir):
if dir != Vector2.ZERO:
heldTicks += 1
else:
@ -330,10 +349,11 @@ func wobble():
func rotationalDrag(length,delta):
var yvel = (length * rdragStr)
#Calculate Max angle
yvel = clamp(yvel,rLimitMin,rLimitMax)
sprite.rotation = lerp_angle(sprite.rotation,deg_to_rad(yvel),0.25)
func stretch(length,delta):

View file

@ -103,6 +103,7 @@ func _process(delta):
$Position/Label.text = "position X : "+str(obj.position.x)+" Y: " + str(obj.position.y)
$Position/Label2.text = "offset X : "+str(obj.offset.x)+" Y: " + str(obj.offset.y)
$Position/Label4.text = "rotation X : "+str(int(rad_to_deg(obj.rotation)))
$Position/Label3.text = "layer : "+str(obj.z)
#Sprite Rotational Limit Display

File diff suppressed because one or more lines are too long