Terrain, doodad, and WMO managers are now used to gracefully add and remove map chunk content to and from the map.
Rather than attempting to load everything as fast as possible (the current behavior), smaller portions of doodads, WMOs, WMO groups, and WMO doodads are loaded via the managers at configurable intervals. The same holds true for unloading.
WMO groups are loaded outdoor-first, to minimize the chance for visible pop-in when approaching large WMOs such as capital cities.
When map doodads and WMOs are no longer referenced by the set of loaded map chunks, they are removed from the map. Large WMOs are unloaded on a timed delay, to prevent excessive loading and unloading when chunk boundaries are crossed.
WMO doodads are now added to their relevant WMO group, and being to load after the group has loaded.
matrixAutoUpdate has been set to false for all core 3D classes in Wowser. Instead, manual calls to updateMatrix() are made at appropriate times. This has significantly reduced the amount of matrix multiplication occurring during the render loop, which, in turn has improved framerates.
Geometries, materials, and textures now get THREE.js dipose() calls, which triggers removal of various data from the WebGLRenderer (and, in turn, the GPU).
M2s, WMOs, WMOGroups, and Textures are now managed by blueprint classes. The blueprint classes track references to every M2, WMO, WMOGroup, and Texture, and ensure that each is disposed of and removed from the relevant Wowser cache when appropriate.
matrixAutoUpdate
has been set to false for all core 3D classes in Wowser. Instead, manual calls toupdateMatrix()
are made at appropriate times. This has significantly reduced the amount of matrix multiplication occurring during the render loop, which, in turn has improved framerates.dipose()
calls, which triggers removal of various data from theWebGLRenderer
(and, in turn, the GPU).M2
s,WMO
s,WMOGroup
s, andTexture
s are now managed by blueprint classes. The blueprint classes track references to everyM2
,WMO
,WMOGroup
, andTexture
, and ensure that each is disposed of and removed from the relevant Wowser cache when appropriate.