Skip to content

Commit aadd9b8

Browse files
committed
Line: shift transform times when detokenizing.
This should save a bit of time creating a bunch of transform tables, as well as fix some weird problems.
1 parent b3bdbbb commit aadd9b8

2 files changed

Lines changed: 14 additions & 12 deletions

File tree

src/Line.moon

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,13 @@ class Line
295295

296296
detokenizeTransforms: =>
297297
@loopOverTokenizedTransforms ( index ) ->
298-
return @transforms[tonumber index]\toString @
298+
transform = @transforms[tonumber index]
299+
transform.startTime -= @transformShift
300+
transform.endTime -= @transformShift
301+
result = transform\toString!
302+
transform.startTime += @transformShift
303+
transform.endTime += @transformShift
304+
return result
299305

300306
if @transformEnded
301307
@transformEnded = nil
@@ -308,10 +314,14 @@ class Line
308314
interpolateTransforms: =>
309315
@loopOverTokenizedTransforms ( index ) ->
310316
transform = @transforms[tonumber index]
317+
transform.startTime -= @transformShift
318+
transform.endTime -= @transformShift
311319
transform\gatherTagsInEffect!
312320
transform\collectPriorState @
313-
return transform\interpolate aegisub.ms_from_frame(aegisub.frame_from_ms(@start_time)+1) - @start_time
314-
@deduplicateTags!
321+
result = transform\interpolate aegisub.ms_from_frame(aegisub.frame_from_ms(@start_time)+1) - @start_time
322+
transform.startTime += @transformShift
323+
transform.endTime += @transformShift
324+
return result
315325

316326
combineWithLine: ( line ) =>
317327
if @text == line.text and @style == line.style and (@start_time == line.end_time or @end_time == line.start_time)

src/MotionHandler.moon

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,7 @@ class MotionHandler
149149
newText = newText\gsub pattern, ( tag, value ) ->
150150
tag .. callback @, value, frame
151151

152-
newTransforms = { }
153-
for transform in *.transforms
154-
table.insert newTransforms, Transform transform.startTime - timeDelta,
155-
transform.endTime - timeDelta,
156-
transform.accel,
157-
transform.effect,
158-
transform.index
159-
160-
@resultingCollection\addLine Line line, @resultingCollection, { text: newText, start_time: newStartTime, end_time: newEndTime, transforms: newTransforms }
152+
@resultingCollection\addLine Line line, @resultingCollection, { text: newText, start_time: newStartTime, end_time: newEndTime, transformShift: timeDelta }
161153

162154
position = ( pos, frame ) =>
163155
x, y = pos\match "([%-%d%.]+),([%-%d%.]+)"

0 commit comments

Comments
 (0)