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:
parent
3173b21368
commit
f522cd7698
6 changed files with 166 additions and 129 deletions
|
@ -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
|
@ -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]
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue