Transform functions are only evaluated once at the beginning of Move Transition, and then ignored.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ren'Py |
Fix Released
|
Undecided
|
Tom Rothamel |
Bug Description
If one is using the 'function' parameter to Transform() in order to modify some parameters of the Transform during display, and then one shows a Displayable using both this Transform and also the Move transition, Ren'Py does not display it correctly. The transition appears to evaluate the Transform function only once, right at the beginning of the transition, and then fails to call it again no matter what number was returned from the Transform function - even after the move has completely finished.
Attached is a demonstration of the problem - you will have to copy the 'lucy_orb.png' file from the Ren'Py demo to see it.
Note in particular that in the third part of the demonstration, the orb appears against the left-most side of the screen - this demonstrates that the Transform function is called at least once, as otherwise the orb would be shown with an xpos of 100, as is specified in the Transform itself.
Changed in renpy: | |
status: | New → Confirmed |
assignee: | nobody → Tom Rothamel (renpytom) |
Changed in renpy: | |
milestone: | none → 6.14 |
Changed in renpy: | |
status: | Confirmed → Fix Released |
This will take a rewrite of MoveTransition to fix - probably one that changes its signature.
Right now, MoveTransition gets positions from the old and new displayables, and passes them to a factory function that creates a Move object. In the new version, we will instead have to continuously evaluate the position of the two displayables and then interpolate that position, with time warp.
That's a bigger change than I want to do in 6.13, so this will wait for 6.14.
Memo to self: The signature for this should be something like MoveTransition( duration, enter_transform =None, leave_transform =None, time_warp=None, old=False).