fix: use TYPE_VALUE (0) for all animation tracks, not TYPE_ROTATION (1)

Animation.TrackType in Godot 4.2.1 doesn't have a named enum member for
value 1, so add_track(1) fails. Use add_track(0) for all tracks - the
Animation API accepts both Vector3 and Quaternion values regardless of
track type.
This commit is contained in:
2026-06-25 12:26:21 -04:00
parent 6cfa8aa631
commit 7e40085b80
+2 -2
View File
@@ -256,11 +256,11 @@ func _create_idle_anim() -> Animation:
return anim return anim
func _add_rot_track(anim: Animation, bone_name: String, keyframes: Array) -> void: func _add_rot_track(anim: Animation, bone_name: String, keyframes: Array) -> void:
var track = anim.add_track(1) # TYPE_ROTATION = 1 var track = anim.add_track(0) # TYPE_VALUE = 0 (required in Godot 4.2.1)
anim.track_set_path(track, "MikuRig/Skeleton3D:" + bone_name) anim.track_set_path(track, "MikuRig/Skeleton3D:" + bone_name)
anim.track_set_interpolation_type(track, Animation.INTERPOLATION_LINEAR) anim.track_set_interpolation_type(track, Animation.INTERPOLATION_LINEAR)
for kf in keyframes: for kf in keyframes:
# Use Vector3 euler angles (NOT Quaternion) - Godot 4.2.1 expects euler Vector3 # Use Vector3 euler angles - Godot 4.2.1 accepts both Vector3 and Quaternion
anim.track_insert_key(track, kf["t"], kf["euler"]) anim.track_insert_key(track, kf["t"], kf["euler"])
func _is_animation_broken(ap: AnimationPlayer, anim_name: String) -> bool: func _is_animation_broken(ap: AnimationPlayer, anim_name: String) -> bool: