cameni,
Crash on exit is not known to me. There's no destructor at all.
Here's code for translation compensation. Can you test, please? It might solve aforementioned pitch-down-translate-down problem:
if (compensate)
{
const auto H = output_camera.axes[Yaw] * M_PI / 180;
const auto P = output_camera.axes[Pitch] * M_PI / 180;
const auto B = output_camera.axes[Roll] * M_PI / 180;
const auto cosH = cos(H);
const auto sinH = sin(H);
const auto cosP = cos(P);
const auto sinP = sin(P);
const auto cosB = cos(B);
const auto sinB = sin(B);
double foo[] = {
cosH * cosB - sinH * sinP * sinB,
- sinB * cosP,
sinH * cosB + cosH * sinP * sinB,
cosH * sinB + sinH * sinP * cosB,
cosB * cosP,
sinB * sinH - cosH * sinP * cosB,
- sinH * cosP,
- sinP,
cosH * cosP,
};
---------------
Didn't change any constants. I don't know, sorry. Need to test somehow...
---------------
Additionally we may want to try changing the game id to something else.