Formatiere mal deinen Code ordentlich (über das was das bedeutet kann man super streiten, aber es sollte zumindest konsistent sein). Ich bin sehr dafür Geschweifte Klammern immer übereinander zu machen, so wie es bei dir schon ist und dann aber nicht weiter eingerückt, als das while oder if oder was auch immer. Auch finde ich es schöner bei sowas wie if (blubb) das Leerzeichen zwischen dem if und der Klammer nicht zu machen. Du machst es aktuell bei dem if, aber nicht bei dem while, also lass es gleich überall weg.
Bei deinem Code weiter oben steht else { if(irgendwas) { } }, stattdessen kann man auch einfach schreiben: else if(irgendwas) { }, ist wie ich finde deutlich übersichtlicher.

Für deine Probleme mit der Bewegung musst du etwas mit Vektoren herumrechnen, was eigentlich ganz einfach ist, vor allem mit Gamestudios Funktionen.
In deinem Fall willst du ja offenbar die Kamera abhängig von der Mausbewegung immer nach Vorne/Hinten bzw Links/Rechts bewegen und zwar immer in die entsprechende Richtung aus Sicht der Kamera. Dazu kannst du dir temporär einen Vektor für die Bewegung aus Sicht der Kamera bauen und musst diesen dann aber aus dem Koordinatensystem der Kamera in das der Welt transformieren. Da es nur eine Richtung ist Spielt dabei die Position der Kamera keine Rolle, sondern nur die Rotation. Du musst also diesen Vektor genauso rotieren wie die Kamera. Vektoren kann man mit ein bisschen unübersichtlichem sin/cos rotieren, in Gamestudio gib es da vec_rotate(vector, camera.pan). Das Ergebniss kannst du dann auf die Position der Kamera Addieren.