[DirectX] Kamera an Maus ausrichten.

Cromon

Erfahrenes Mitglied
Hallo miteinander!

Ich habe hier ein kleines Problem beim Ausrichten der Kamera zum Mauszeiger. Und zwar habe ich mir folgende Überlegungen gemacht:

1. Phase:
Umrechnen der Screen-Koordinaten in eine 3D-Gerade und einfach einen Punkt auf der Gerade nehmen und die Matrix dann darauf ausrichten.
Problem: Die Maus erreicht irgendwann den Bildschirmrand --> Fertig lustig

2. Phase:
Ok, Maus muss wieder zurück in den Mittelpunkt. Also setzte ich sie nach jedem Update wieder mit SetCursorPos(width/2, height/2); in die Mitte.
Problem: SetCursorPos provoziert wieder eine WM_MOUSEMOVE-Nachricht und somit wird die Matrix dann wieder auf den Mittelpunkt ausgerichtet --> Ein ständiges Ruckeln um die Bildschirmmitte.

3. Idee:
WM_MOUSEMOVE so umgestalten:
Code:
		case WM_MOUSEMOVE:
			{
				if(mgr->activecam->isfps)
				{
					if(LOWORD(msg.lParam) == resolution.x / 2 && HIWORD(msg.lParam) == resolution.y / 2)
						break;
					mgr->UpdateFPSCam(LOWORD(msg.lParam), HIWORD(msg.lParam));
					SetCursorPos(resolution.x / 2, resolution.y / 2);
					break;
				}
			}

Ich überprüfe also zuerst, ob die Koordinaten die Mitte sind. Falls ja, dann muss man nichts machen, sonst muss man verschieben und wieder in die Mitte setzten. Meine Vorstellung war dann also:
Maus wird bewegt --> Koordinaten werden gelesen --> Kamera wird ausgerichtet --> Cursor wird in die Mitte gesetzt --> Bild wird gerendert --> Die nächste WM_MOUSEMOVE wird ignoriert, da der Cursor in der Mitte ist --> Die BIldschirmmitte ist jetzt da, wo man vorher die Maus hinbewegte.

Problem: Unterschied zu Phase2 nicht erkennbar ;D

Hat jemand von euch eine Idee, was falsch läuft?

Mit bestem Dank und Gruss
Cromon
 
Zurück