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"]
|
sprite.clipped = data[item]["clipped"]
|
||||||
if data[item].has("toggle"):
|
if data[item].has("toggle"):
|
||||||
sprite.toggle = data[item]["toggle"]
|
sprite.toggle = data[item]["toggle"]
|
||||||
|
if data[item].has("baseRotation"):
|
||||||
|
sprite.rotation = data[item]["baseRotation"]
|
||||||
|
|
||||||
origin.add_child(sprite)
|
origin.add_child(sprite)
|
||||||
sprite.position = str_to_var(data[item]["pos"])
|
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]["clipped"] = child.clipped
|
||||||
|
|
||||||
data[id]["toggle"] = child.toggle
|
data[id]["toggle"] = child.toggle
|
||||||
|
data[id]["baseRotation"] = child.rotation
|
||||||
|
|
||||||
id += 1
|
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_width=1280
|
||||||
window/size/viewport_height=720
|
window/size/viewport_height=720
|
||||||
|
window/size/always_on_top=true
|
||||||
window/size/transparent=true
|
window/size/transparent=true
|
||||||
window/per_pixel_transparency/allowed=true
|
window/per_pixel_transparency/allowed=true
|
||||||
window/vsync/vsync_mode=0
|
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)
|
"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]
|
[rendering]
|
||||||
|
|
||||||
|
|
|
@ -271,11 +271,29 @@ func _physics_process(delta):
|
||||||
var dir = pressingDirection()
|
var dir = pressingDirection()
|
||||||
if Input.is_action_pressed("origin"):
|
if Input.is_action_pressed("origin"):
|
||||||
moveOrigin(dir)
|
moveOrigin(dir)
|
||||||
|
elif Input.is_action_pressed("rotate"):
|
||||||
|
rotateSprite(dir)
|
||||||
else:
|
else:
|
||||||
moveSprite(dir)
|
moveSprite(dir)
|
||||||
else:
|
else:
|
||||||
set_physics_process(false)
|
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():
|
func pressingDirection():
|
||||||
var dir = Vector2.ZERO
|
var dir = Vector2.ZERO
|
||||||
|
|
||||||
|
@ -284,6 +302,7 @@ func pressingDirection():
|
||||||
return dir
|
return dir
|
||||||
|
|
||||||
func moveSprite(dir):
|
func moveSprite(dir):
|
||||||
|
|
||||||
if dir != Vector2.ZERO:
|
if dir != Vector2.ZERO:
|
||||||
heldTicks += 1
|
heldTicks += 1
|
||||||
else:
|
else:
|
||||||
|
@ -330,10 +349,11 @@ func wobble():
|
||||||
func rotationalDrag(length,delta):
|
func rotationalDrag(length,delta):
|
||||||
var yvel = (length * rdragStr)
|
var yvel = (length * rdragStr)
|
||||||
|
|
||||||
|
|
||||||
#Calculate Max angle
|
#Calculate Max angle
|
||||||
|
|
||||||
yvel = clamp(yvel,rLimitMin,rLimitMax)
|
yvel = clamp(yvel,rLimitMin,rLimitMax)
|
||||||
|
|
||||||
sprite.rotation = lerp_angle(sprite.rotation,deg_to_rad(yvel),0.25)
|
sprite.rotation = lerp_angle(sprite.rotation,deg_to_rad(yvel),0.25)
|
||||||
|
|
||||||
func stretch(length,delta):
|
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/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/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)
|
$Position/Label3.text = "layer : "+str(obj.z)
|
||||||
|
|
||||||
#Sprite Rotational Limit Display
|
#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