[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

To specify the priorities of the Bobs, use the Before and After pointers.
Before points to the Bob that this Bob should be drawn before, and After
points to the Bob that this Bob should be drawn after.  By following these
pointers, from Bob to Bob, the system can determine the order in which the
Bobs should be drawn.  (Take care to avoid circular dependencies in this

    This terminology is often confusing, but, due to historical reasons,
    cannot be changed.  The system does not draw the Bobs on the Before
    list first, it draws the Bobs on the After list first. Next, it draws
    the current Bob, and, finally, the Bobs on the Before list.

For example, to assure that myBob1 always appears in front of myBob2, The
Before and After pointers must be initialized so that the system will
always draw myBob1 after myBob2.

    myBob2.Before = &myBob1;     /* draw Bob2 before drawing Bob1 */
    myBob2.After  = NULL;        /* draw Bob2 after  no other Bob */
    myBob1.After  = &myBob2;     /* draw Bob1 after  drawing Bob2 */
    myBob1.Before = NULL;        /* draw Bob1 before no other Bob */

As the system goes through the GelsInfo list, it checks the Bob's After
pointer.  If this is not NULL, it follows the After pointer until it hits
a NULL.  Then it starts rendering the Bobs, going back up the Before
pointers until it hits a NULL.  Then it continues through the GelsInfo
list.  So, it is important that all Before and After pointers of a group
properly point to each other.

    In a screen with a number of complex GELs, you may want to specify
    the Before and After order for Bobs that are not in the same
    AnimOb.  This will keep large objects together.  If you do not do
    this, you may have an object drawn with half of its Bobs in front of
    another object!  Also, in sequences you only set the Before and
    After pointers for the active AnimComp in the sequence.

[Back to Amiga Developer Docs]