public void Calculate(Rect2d target, int window_width, int window_height, double mapW, double mapH, bool moveDown, bool capCorrection = true) { Rect2d cameraBox = GetOffsetBox(window_width, window_height); Vec2d playerPos = target.GetMiddle(); // Wenn man aus der Mittleren Box rausläuft - Offset Verschieben //############################################################################### Vec2d moveCorrection = cameraBox.GetDistanceTo(playerPos); if (moveDown && moveCorrection.Y == 0 && playerPos.Y != cameraBox.tl.Y) { moveCorrection.Y -= 5; } // Offset NICHT verschieben wenn amn damit die Grenzen der aktuellen Zone verletzten Würde //############################################################################### Vec2d zoneCorrection = GetVisionZoneCorrection(Value + moveCorrection, playerPos, window_width, window_height); Vec2d realCorrection = moveCorrection + zoneCorrection; if (capCorrection) { realCorrection.DoMaxLength(MAX_CORRECTION_SPEED); } if (realCorrection.GetLength() < 0.001) { realCorrection = Vec2d.Zero; } Value += realCorrection; }