Optimize: T_SCROLL thinkers for material origin scrolling
Texture origin scrolling in the original games is implemented by iterating all lines (and sectors in Heretic/Hexen) of the map on each game tic, irrespective of the number of scrolling surfaces.
As Doomsday game plugins inteface with the map by proxy, via the map update API (DMU), this iteration and the interactions needed actually implement the scrolling added up to considerable amount DMU API calls. (Hexen was the worst offender in that it would repeatedly zero the plane material offsets for every plane on the map, on each tic).
The introduction of T_SCROLL thinkers alleviates much of this overhead, however there is still need to interface with DMU to actually perform the scrolling.
Todo for later: As the only variants are scroll angle/speed it should also be possible to dynamically combine T_SCROLL thinkers, such that a single thinker operates on a set of surfaces rather than just one.
Optimize: T_SCROLL thinkers for material origin scrolling
Texture origin scrolling in the original games is implemented by
iterating all lines (and sectors in Heretic/Hexen) of the map on
each game tic, irrespective of the number of scrolling surfaces.
As Doomsday game plugins inteface with the map by proxy, via the
map update API (DMU), this iteration and the interactions needed
actually implement the scrolling added up to considerable amount
DMU API calls. (Hexen was the worst offender in that it would
repeatedly zero the plane material offsets for every plane on the
map, on each tic).
The introduction of T_SCROLL thinkers alleviates much of this
overhead, however there is still need to interface with DMU to
actually perform the scrolling.
Todo for later: This thinker should be relocated into the engine
and remodelled along the lines of a "map update agent" (see this
proposal article at the wiki: http://dengine.net/dew/index.php?title=Map_update_agents).
Todo for later: As the only variants are scroll angle/speed it
should also be possible to dynamically combine T_SCROLL thinkers,
such that a single thinker operates on a set of surfaces rather
than just one.
See bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2191907&group_id=74815&atid=542099#