Alot of testing has been done and I had a tough decision to make, but I'm sure this is the right one. When I started parsing MPQs it became apparent that, if done wrong, reading ADTs can be slow as hell. I wanted to improve speed for reading ADTs so bad I completely negelected usability. Remember my goal was to write a parser that can export WoW's mesh and terrain data to formats that can be read by common modelers like Maya/Blender and be used for things like navmesh generation.
The fastest solution I came across was a model where I allocated one big buffer each for vertices, normals and indices. These buffers were big enough to hold every geometry that you could read from ADTs and so on. This was almost the only allocation I had in the whole reading process in my code and it upped my reading speed by 16% of my original results posted on mmowned.
It was a huge step speed-wise for me. I was able to load terrains with wmos and doodads + skins, yes even wmo interior with skin, with an average of almost 20 ADTs/s. I think people parsing ADTs themself know what that means. Imagine loading complete Azeroth geometry in about 35 secs (and my rig is about 3 years old: AMD 5600+ X2, 3GB Ram, Radeon 9600GT, 320GB Hitachi Sata).
BUT it wasn't very user friendly anymore. Remember everything was done on these single buffers: if I had to transform geometry from ADT 23 -> WMO 12 -> doodad 34, I was performing these somewhere on this one buffer at offset X with Y elements. I had a bunch of sleepless nights only dealing with offsets instead of data that can be exclusively modified and just copied to a buffer when done. So I changed it for the sake of better usability. I now have mesh class where every mesh has its own buffers, and even transformation information. So one ADT terrain is put into one mesh. Every WMO gets its own mesh aswell as every doodad does. This way I have all data cleanly seperated and I can do with it whatever I want. Everyone crying about the loss of speed I can tell: "You don't want to deal with it, trust me...I'm serious."
Altough I said I want to release it for windows too, I've to disappoint you for now. I just didn't have the time to do it. Sorry! So here it is: wowmapper (Revision 33)
If you have any request, bugs or improvements you want to see just write me on mmowned, nick: Flowerew, or leave comments here at my blog.