At 12:30 -0800 13/02/06, Kevan Dettelbach wrote:
When the member being sought after exists, the above runs in under a
millisecond, when the member does not exist it takes 80 milliseconds
to not find it.
My guess is that when Director does not find the member in the
current cached member-lookup-table, it rescans all members as a
safety-measure, and that is why it takes so long. I could well be
wrong, and it doesn't matter; the fact is it's slow. The point is
just that when you build and rely upon your own custom database
scheme, you can design it to not exhibit such unwanted behavior.
1. For each level, compile a look-up table to determine which images
exist at that level. Drawback: due to the number of images involved,
this look-up table would be huge, and memory is very tight in this
program already to the number of large images being moved in and out
of memory all the time.
Like Valentin said; in comparison to the amount of memory used for
huge images, the amount needed for a lookup-list should be immaterial.
You could scan through the castlibs and build a propList like so:
[intLevelNum:[intMemberID:memberRef,...],...]
Where intMemberID is something like: (currow * 1000) + curcol
Remember to sort the lists when built, because it increases speed.
In my experience such a scan-build is surprisingly fast, and its a
one-time event when your engine starts.
If the scan-build is to slow for runtime startup you could run it
during authoring, and cache the result. There are a couple of xtras
that saves lists as files, and reestablishes them reeeealy fast.
2. Access the members, using the numerical version of member() i.e.
member(membernum,castnum). This has the added advantage of actually
being faster when the image exists as well. Drawback: The images are
sorted by level into different casts, but are not guarrenteed to be
sorted correctly within those casts. I think they are, but there are
thouands of images to check.
I'm not so hot on this route, but you said you were leaning this way, so:
If the members aren't properly ordered now, then make some
authoring-lingo that moves them according to your liking... then they
will be in order.
Sincerely Jakob.
[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/lingo-l.cgi To post messages to the list, email
[email protected] (Problems, email [EMAIL PROTECTED]). Lingo-L is for
learning and helping with programming Lingo. Thanks!]