Some add-ons need to rotate meshes inside a vessel as well as translate it.
Right now there are the methods ShiftMesh(), which translates the mesh, and MeshgroupTransform() which can be used to rotate it, though it does not neccessarily impact the whole mesh, is not quite intended for the purpose of offsetting a meshes rotation, and also isn't available in Orbiter_ng, which by this point is very much a reason never to use a method.
The only thing left to achieve mesh rotation inside a vessel and have it work with clients is oapiEditMeshGroup(). Which I recently discovered leads to massive loss of performance in D3D9client
The reason for this was found to be that D3D9client optimises meshes that are real-time edited for write-access
to increase performance in virtual cockpits where meshes might be edited on a per-frame basis.
However, some add-ons have the requirement to transform meshes relative to the containing vessel, just as well as translate them. This is not a recurring operation, but the client has no way to tell.
IMS2 is at the forefront of addons doing this of course, but UCGO is almost certainly among them too (at least I cannot see a way Dan could have solved the problem differently, or I would have used it myself). There might be others.
The best solution by Jarmonik is deemed to implement a method that allows to set a complete matrix for a mesh, as outlined here
. Other approaches would be possible, but this would be the one that guarantees the best compatibility throughout different clients.
It would be great if a method like this could make it into P1!