Describe the bug
Cost of rendering this SWF scales linearly until it died. RemoveChild() is likely never being called by the SWF. The SWF creates new Sprite particles every frame and moves them off-screen without removing them and probably sets visible = false, and they pile up.
Flash probably culled off-screen/invisible objects during both tick and render. Ruffle appears to process ALL display objects every frame — O(n) tick
and O(n) render regardless of visibility or position.
Also, the orphan manager retains removed MovieClips/Sprites (since AS3 Sprites are MovieClips internally in Ruffle), and enter_frame is called on
ALL orphans every frame. But this isn't the primary issue here since the objects aren't even being removed.
Expected behavior
Invisible Objects lists should be clipped/culled
Content Location
Rainbow_art4.zip
Affected platform
Desktop app
Operating system
Android, Windows
Browser
No response
Additional information
No response
Describe the bug
Cost of rendering this SWF scales linearly until it died. RemoveChild() is likely never being called by the SWF. The SWF creates new Sprite particles every frame and moves them off-screen without removing them and probably sets visible = false, and they pile up.
Flash probably culled off-screen/invisible objects during both tick and render. Ruffle appears to process ALL display objects every frame — O(n) tick
and O(n) render regardless of visibility or position.
Also, the orphan manager retains removed MovieClips/Sprites (since AS3 Sprites are MovieClips internally in Ruffle), and enter_frame is called on
ALL orphans every frame. But this isn't the primary issue here since the objects aren't even being removed.
Expected behavior
Invisible Objects lists should be clipped/culled
Content Location
Rainbow_art4.zip
Affected platform
Desktop app
Operating system
Android, Windows
Browser
No response
Additional information
No response