Ahja, wobei ich sagen muss, wenn ich den Kommentar bei CalculatePosition() wegnehme, es den Anschein hat, als ob die Werte wirklich in diesem Bereich liegen bzw. in den Bereich kommen.
Allerdings auch nur dann, sobald das ganze in einer while Schleife läuft.
Wird die Funktion nur einmal aufgerufen, stimmt die Kamera Position.
Wird sie in einer Schleife immer wieder aufgerufen, stürzt das Programm direkt nach wenigen Sekunden ab.
Deshalb hab ich schnell das Debug Panel erzeugt, um zu schauen ob da der Fehler liegt.
Hier mal die CalculatePosition() und ManipulatePosition() Funktionen:
////////////////////////////////////////////////////////////////////////////////////
function CalculatePosition(CAMERA* pCam)
{
pCam.Distance = (cos(pCam.Tilt) * pCam.TotalDistance);
vCamera.x = (pCam.Pivot.x - cos(pCam.Pan) * pCam.Distance);
vCamera.y = (pCam.Pivot.y - sin(pCam.Pan) * pCam.Distance);
vCamera.z = ((pCam.Pivot.z + sin(pCam.Tilt) * pCam.TotalDistance) + pCam.Height);
vCamera.pan = pCam.Pan;
vCamera.tilt = -(pCam.Tilt);
vCamera.roll = 0;
}
////////////////////////////////////////////////////////////////////////////////////
function ManipulatePosition(CAMERA* pCam)
{
pCam.Pan += (mickey.x * time_step);
pCam.Tilt += (mickey.y * time_step);
pCam.TotalDistance -= (mickey.z * time_step);
}
////////////////////////////////////////////////////////////////////////////////////