The first part of the fix is to assign VBO/EBO's upon loading the array in the Nif reader. This avoids triggering the 'addVertexBufferObjectIfRequired' code path in osg::Geometry which has the race condition when two threads add the same Array at the same time. Essentially, we want the Arrays to be 'const' when they come out of the Nif reader.
The second part of the fix is to make sure not to create empty arrays in the Nif reader (importantly, not assigning a VBO to the empty array). This empty array would be deleted when the NIFFile is cleaned up, and the detachment of the VBO assigned to it (which is still in use by other arrays) would cause threading issues.
This rare crash bug was first introduced with commit a7c5beb7c5d495446e5d7facaa780fbf851d1848. When using OSG dev version 3.5 the crashes were a little more prevalent, because 'addVertexBufferObjectIfRequired' in osg::Geometry is now used even when VBO's are disabled (as part of the VAO support changes).
Flip the texture coordinates instead of flipping textures.
This simplifies the TextureManager (no need to worry if the caller wants flipping or not), should make it easier to generalize & multithread it.
Cache the current position in the animation track and attempt to reuse it in the next frame.
Decent speed up for the Update phase, about 0.3 ms faster in Balmora.
This reverts commit ad609bff7822abffc76de9ae01b50cb9df97b093.
Revert "Made incorrect nif get error message more informative."
This reverts commit 9909c4abadbe4c0aedc24a50155908c5e7e39b13.
Revert "Build the nif file tester by default"
This reverts commit c1315ed90c87a457f17e6076c149465da3fa6c3a.
Revert "Converted most nifstream "get multiple" functions to the templated version"
This reverts commit 2619d57bb6afc5c31bf1a90b8c033d66f29a9a58.
Revert "Add a templated option for getting vectors to NIFStream"
This reverts commit f318ee0b8c68a46d53a0fdd216ae8d6b371eedc2.
Revert "Made NIFStream getters templated"
This reverts commit 4edc4142f3b4f1cde4d99392045d5d25858e6bf7.
It's extremely useful in determining if a nif file is bad without having to load up openmw or opencs.
Also updated the nif testing script to run at a low priority.