| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // y_tdmorph - morphs a textdraw from one style to another. You can use this to
- // fade them in and out (same location, different colour), move them across the
- // screen (same style, different location) or do almost anything else (shrink,
- // grow, bounce about etc).
- forward MorphTD(Text:td, Style:from, Style:to, speed, pos);
- public MorphTD(Text:td, Style:from, Style:to, speed, pos)
- {
- // Morph a text draw from one style to another.
- stock
- sFrom[E_TD_DATA],
- sTo[E_TD_DATA],
- sCur[E_TD_DATA];
- // Get the end style.
- TD_GetStyle(to, sTo);
- if (pos == speed)
- {
- // Show the TD using the end point only (no interpolation).
-
- // We could add a callback here to indicate that the morph is done.
- }
- else
- {
- // Get the start style.
- TD_GetStyle(from, sFrom);
- // Interpolate.
- #define MORPH_TD_FROM_TO(%0) sCur[E_TD_DATA_%0] = (sTo[E_TD_DATA_%0] - sFrom[E_TD_DATA_%0]) * pos / speed + sFrom[E_TD_DATA_%0]
- MORPH_TD_FROM_TO(X);
- MORPH_TD_FROM_TO(Y);
- MORPH_TD_FROM_TO(LX);
- MORPH_TD_FROM_TO(LY);
- MORPH_TD_FROM_TO(TX);
- MORPH_TD_FROM_TO(TY);
- MORPH_TD_FROM_TO(COLOUR);
- MORPH_TD_FROM_TO(BITS);
- MORPH_TD_FROM_TO(BOX);
- MORPH_TD_FROM_TO(BG);
- #undef MORPH_TD_FROM_TO
- // Show the interpolated TD data.
- }
- }
|