1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 23:11:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Tools/TickTool.gd
T
fallingshrimp dd999e53fb refactor(TickTool): 将变量声明移到使用位置以提升代码可读性
将inHandle和outHandle变量的声明移到实际使用的bezier轨道条件块内,减少不必要的变量作用域,使代码更清晰易读
2026-01-24 08:24:48 +08:00

24 lines
1.0 KiB
GDScript

class_name TickTool
static func millseconds(ms: float):
return await WorldManager.tree.create_timer(ms / 1000.0).timeout
static func frame(count: int = 1):
for i in range(count):
await WorldManager.tree.physics_frame
static func until(predicate: Callable):
var obj = predicate.get_object()
while is_instance_valid(obj):
await frame()
if predicate.call():
break
static func modifyAnimationKey(animator: AnimationPlayer, name: String, track: NodePath, trackType: Animation.TrackType, time: float, value: Variant):
var animation = animator.get_animation(name)
var trackIdx = animation.find_track(track, trackType)
var keyIdx = animation.track_find_key(trackIdx, time)
if trackType == Animation.TrackType.TYPE_BEZIER:
var inHandle = animation.bezier_track_get_key_in_handle(trackIdx, keyIdx)
var outHandle = animation.bezier_track_get_key_out_handle(trackIdx, keyIdx)
animation.track_set_key_value(trackIdx, keyIdx, [value, inHandle.x, inHandle.y, outHandle.x, outHandle.y])
else:
animation.track_set_key_value(trackIdx, keyIdx, [value])