Re: [Plib-users] Runway Lights and Undocumented Secrets of Plib
Brought to you by:
sjbaker
|
From: Steve B. <sjb...@ai...> - 2002-11-16 16:59:06
|
David Megginson wrote:
> Plib has callbacks for branches as well as leaves, but the branch
> callbacks are not documented, so I had to dig trough the plib source
> code (they're the same ones I used for the dynamic scenery objects).
> For a branch, you can set pre-traversal and post-traversal callbacks;
> if the pre-traversal callback return false, then the branch will be
> skipped. Here's a trivial (and not-so-efficient) example:
>
> static int cloaking_callback (ssgEntity * e, int mask)
> {
> return !fgGetBool("/controls/cloaking-device");
> }
>
> ssgBranch * ship;
>
> // ...
>
> ship->setTravCallback(SSG_CALLBACK_PRETRAV, cloaking_callback);
>
> Now, the 'ship' branch will automatically vanish whenever the
> /controls/cloaking-device property is true and reappear when it's
> false.
Yes - I apologise that this isn't documented - but it's vitally
important that you can do this -so it *should* be documented.
Bear in mind though that your callback is only called when the
object's parent is inside the field of view. This is both an
advantage and a curse. It means that expensive callbacks are
only called when they are needed - but also that callbacks with
side-effects are a bit unpredictable!
> For the dynamic objects, I use a much more complicated approach -- the
> branches are actually empty until ssg attempts to traverse them, then
> (at first traversal) FlightGear populates them with pseudo-randomly
> placed objects.
Wow!
> That way, branches that never come into range or into
> the view direction are never populated. I also have a callback to
> depopulate the branches once they fall out of range. That turns out
> to be a fairly efficient way to add many objects (such as buildings or
> trees) to the scenery nearby without overwhelming the system.
Interesting.
---------------------------- Steve Baker -------------------------
HomeEmail: <sjb...@ai...> WorkEmail: <sj...@li...>
HomePage : http://web2.airmail.net/sjbaker1
Projects : http://plib.sf.net http://tuxaqfh.sf.net
http://tuxkart.sf.net http://prettypoly.sf.net
|