This fixes bugs related to the case that several instances of the same mesh but with different rotation in their transformation matrix was present in the Collada file, which previously caused distorted objects except for those having the same rotation as the first instance.
A caveat is that now, as the incoming transform matrix is not used when creating the vertices and as the ModelPrim only stores rotation, scale and translation files which have transforms containing shear etc. not encodable by these three vectors will produce erroneous output even if there is only one instance of each mesh.
At the same time save some time and space during conversion by sharing the Positions and Faces members of all prims and not redoing the AddPositions and AddFacesFromPolyList calls for each instace (as results are identical). Applications that change the vertices or faces in situ in individual prim instances may suffer.
The order textures are added is significant! All code in OMV proper
already does it right so nothing should break unless your code calls
Baker directly and has textures in the wrong order.
This corrects a severe error where as AssetTypes were being reused for
the Folder FolderType id resulting in invalid ids for various system
folder types causing inventory validation issues from within the SL
viewer.
Imagine a track with many poles, each pole being the same geometry; the LL viewer requires a geometry element for every single pole! This patch makes libomv able to parse Collada files where instances reuse geometries, allowing for much more concise Collada files.
(1) handle hierarchical nodes in the visual scene
(2) handle the <triangle> element of geometries. This was done the lazy way: convert <triangles> to <polylist> and call the function that was already there for handling <polylist>
On at least Mono 3.2.8, multiple UDP sockets can bind to the same port by default. This means that
when running multiple connections, two can occasionally bind to the same port, leading to unexpected
errors as they intercept each others messages.
Prevent this by explicitly setting SocketOptionName.ReuseAddress = false
In 2208379 (Mon Aug 11 23:57:33 2014), DownloadManager.ParallelDownloads was accidentally set to 0 instead of 8.
This commit also try/catches the parallel part of AppearanceManager.DownloadTextures()
Previously, CapsBase.SetupRequest() hardcoded this to 32 and DownloadManager.ParallelDownloads was setting this with a default value of 8.
This meant that the ConnectionLimit would oscillate rapidly between these two figures as requests were made.
On Mono 3.2.8 and quite possibly other Mono, this appears to increase the chance that the VM will crash under heavy request load.
This commit makes both SetupRequest() calls use the static Settings.HTTP_MAX_CONNECTIONS - other static settings already exist, and so also makes this configurable.
DownloadManager.ParallelDownloads remains a separate setting since it also governs max parallel downloads through a separate coded mechanism.