xp12camera
Owner: IIIlllIIIllI URL: git@github.com:nyangkosense/xp12camera.git
4
Commit 3ac4cee14f206cebb09e153f6ae067fd93d85085 by SM <seb.michalk@gmail.com> on 2025-06-25 14:14:28 +0200
diff --git a/FLIR_Camera.cpp b/FLIR_Camera.cpp
index c3d8e82..3e97d20 100644
--- a/FLIR_Camera.cpp
+++ b/FLIR_Camera.cpp
@@ -195,7 +195,13 @@ static float GetDistanceToCamera(float x, float y, float z);
TiltDownCallback, NULL);
// Register thermal overlay drawing callback - use objects phase for better integration
- XPLMRegisterDrawCallback(DrawThermalOverlay, xplm_Phase_Modern3D, 1, NULL);
+ int registerResult = XPLMRegisterDrawCallback(DrawThermalOverlay, xplm_Phase_Modern3D, 1, NULL);
+ if (registerResult) {
+ XPLMDebugString("FLIR Camera System: Drawing callback registered successfully\n");
+ } else {
+ XPLMDebugString("FLIR Camera System: Failed to register drawing callback, trying Panel phase\n");
+ XPLMRegisterDrawCallback(DrawThermalOverlay, xplm_Phase_Panel, 0, NULL);
+ }
XPLMDebugString("FLIR Camera System: Plugin loaded successfully\n");
XPLMDebugString("FLIR Camera System: Press F9 to activate camera\n");
@@ -401,31 +407,64 @@ static float GetDistanceToCamera(float x, float y, float z);
{
if (!gCameraActive) return 1;
+ // Debug output to verify callback is being called
+ static int callCount = 0;
+ if (callCount < 5) {
+ XPLMDebugString("FLIR Camera System: DrawThermalOverlay called\n");
+ callCount++;
+ }
+
// Update environmental factors and heat sources
UpdateEnvironmentalFactors();
UpdateHeatSources();
DetectAircraft();
// Set up OpenGL for 2D drawing
+ glPushAttrib(GL_ALL_ATTRIB_BITS);
XPLMSetGraphicsState(0, 0, 0, 1, 1, 0, 0);
+
+ // Set up 2D projection
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix();
+ glLoadIdentity();
+ // glOrtho will be set after getting screen dimensions
+
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+ // Disable depth testing for 2D overlay
+ glDisable(GL_DEPTH_TEST);
// Get screen dimensions
int screenWidth, screenHeight;
XPLMGetScreenSize(&screenWidth, &screenHeight);
+
+ // Now set up the orthographic projection with actual screen dimensions
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(0, screenWidth, 0, screenHeight, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
float centerX = screenWidth / 2.0f;
float centerY = screenHeight / 2.0f;
// Draw targeting reticle
+ if (callCount < 3) {
+ char debugMsg[256];
+ sprintf(debugMsg, "FLIR: Drawing crosshair at %.0f,%.0f (screen %dx%d)\n", centerX, centerY, screenWidth, screenHeight);
+ XPLMDebugString(debugMsg);
+ }
+
glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
- glLineWidth(2.0f);
+ glLineWidth(5.0f); // Make lines thicker to be more visible
glBegin(GL_LINES);
- // Crosshair
- glVertex2f(centerX - 25, centerY);
- glVertex2f(centerX + 25, centerY);
- glVertex2f(centerX, centerY - 25);
- glVertex2f(centerX, centerY + 25);
+ // Crosshair - make it bigger and more visible
+ glVertex2f(centerX - 50, centerY);
+ glVertex2f(centerX + 50, centerY);
+ glVertex2f(centerX, centerY - 50);
+ glVertex2f(centerX, centerY + 50);
// Targeting brackets
float bracketSize = 60.0f / gZoomLevel;
@@ -526,6 +565,12 @@ static float GetDistanceToCamera(float x, float y, float z);
// Position text in corners (actual text rendering would need XPLMDrawString)
// This is just showing where the text would go
+ // Restore OpenGL state
+ glPopMatrix();
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix();
+ glPopAttrib();
+
return 1;
}
diff --git a/FLIR_Camera.o b/FLIR_Camera.o
index e39964f..455e93d 100644
Binary files a/FLIR_Camera.o and b/FLIR_Camera.o differ
diff --git a/build/FLIR_Camera/win_x64/FLIR_Camera.xpl b/build/FLIR_Camera/win_x64/FLIR_Camera.xpl
index 1afd9f4..2ca0554 100755
Binary files a/build/FLIR_Camera/win_x64/FLIR_Camera.xpl and b/build/FLIR_Camera/win_x64/FLIR_Camera.xpl differ