xp12camera
Owner: IIIlllIIIllI URL: git@github.com:nyangkosense/xp12camera.git
zoom sensitivty more granular
Commit 14164f800cf9f8612baa3f0df20abd90b634bd4e by SM <seb.michalk@gmail.com> on 2025-07-01 09:44:44 +0200
diff --git a/FLIR_Camera.cpp b/FLIR_Camera.cpp
index 6c8c180..b119e17 100644
--- a/FLIR_Camera.cpp
+++ b/FLIR_Camera.cpp
@@ -203,10 +203,20 @@ static void ZoomOutCallback(void* inRefcon)
}
}
+static float GetZoomBasedSensitivity(float baseSpeed)
+{
+ // Scale sensitivity inversely with zoom level
+ // At 1x zoom: full speed, at 64x zoom: much slower
+ float zoomFactor = gZoomLevel / 64.0f;
+ float sensitivity = baseSpeed * (1.0f - (zoomFactor * 0.95f));
+ return fmaxf(sensitivity, baseSpeed * 0.05f); // Minimum 5% of base speed
+}
+
static void PanLeftCallback(void* inRefcon)
{
if (gCameraActive && !IsSimpleLockActive()) {
- gCameraPan -= 0.5f;
+ float speed = GetZoomBasedSensitivity(0.5f);
+ gCameraPan -= speed;
if (gCameraPan < -180.0f) gCameraPan += 360.0f;
}
}
@@ -214,7 +224,8 @@ static void PanLeftCallback(void* inRefcon)
static void PanRightCallback(void* inRefcon)
{
if (gCameraActive && !IsSimpleLockActive()) {
- gCameraPan += 0.5f;
+ float speed = GetZoomBasedSensitivity(0.5f);
+ gCameraPan += speed;
if (gCameraPan > 180.0f) gCameraPan -= 360.0f;
}
}
@@ -222,14 +233,16 @@ static void PanRightCallback(void* inRefcon)
static void TiltUpCallback(void* inRefcon)
{
if (gCameraActive && !IsSimpleLockActive()) {
- gCameraTilt = fminf(gCameraTilt + 0.5f, 45.0f);
+ float speed = GetZoomBasedSensitivity(0.5f);
+ gCameraTilt = fminf(gCameraTilt + speed, 45.0f);
}
}
static void TiltDownCallback(void* inRefcon)
{
if (gCameraActive && !IsSimpleLockActive()) {
- gCameraTilt = fmaxf(gCameraTilt - 0.5f, -90.0f);
+ float speed = GetZoomBasedSensitivity(0.5f);
+ gCameraTilt = fmaxf(gCameraTilt - speed, -90.0f);
}
}
@@ -286,8 +299,9 @@ static int FLIRCameraFunc(XPLMCameraPosition_t* outCameraPosition, int inIsLosin
XPLMGetMouseLocation(&mouseX, &mouseY);
if (gLastMouseX != 0 || gLastMouseY != 0) {
- float deltaX = (mouseX - gLastMouseX) * gMouseSensitivity;
- float deltaY = (mouseY - gLastMouseY) * gMouseSensitivity;
+ float zoomBasedMouseSensitivity = GetZoomBasedSensitivity(gMouseSensitivity);
+ float deltaX = (mouseX - gLastMouseX) * zoomBasedMouseSensitivity;
+ float deltaY = (mouseY - gLastMouseY) * zoomBasedMouseSensitivity;
gCameraPan += deltaX;
gCameraTilt -= deltaY;
diff --git a/README b/README.md
similarity index 92%
rename from README
rename to README.md
index 5c5ebaf..615d5a5 100644
--- a/README
+++ b/README.md
@@ -1,3 +1,5 @@
+
+
FLIR Camera Plugin for X-Plane 12
===================================