loop in and out

This commit is contained in:
jrkb 2025-05-18 18:47:00 +02:00
parent ca8b4302a3
commit 88f5579d40
2 changed files with 26 additions and 2 deletions

View file

@ -1014,11 +1014,21 @@ def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4)
glyph_pre_advance, glyph_post_advance = get_glyph_prepost_advances(glyph)
advance += glyph_pre_advance * scalor
# check if we want to loop
applied_advance = advance
if text_properties.loop_in:
if applied_advance < 0:
applied_advance %= curve_length
if text_properties.loop_out:
if applied_advance > curve_length:
applied_advance %= curve_length
if distribution_type == "FOLLOW_PATH":
outer_node.constraints.new(type="FOLLOW_PATH")
outer_node.constraints["Follow Path"].target = mom
outer_node.constraints["Follow Path"].use_fixed_location = True
outer_node.constraints["Follow Path"].offset_factor = advance / curve_length
outer_node.constraints["Follow Path"].offset_factor = applied_advance / curve_length
outer_node.constraints["Follow Path"].use_curve_follow = True
outer_node.constraints["Follow Path"].forward_axis = "FORWARD_X"
outer_node.constraints["Follow Path"].up_axis = "UP_Y"
@ -1034,7 +1044,7 @@ def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4)
previous_inner_node_rotation_mode = inner_node.rotation_mode
# get info from bezier
location, tangent, spline_index = calc_point_on_bezier_curve(mom, advance, True, True)
location, tangent, spline_index = calc_point_on_bezier_curve(mom, applied_advance, True, True)
# check if we are on a new line
if spline_index != previous_spline_index: