diff --git a/xpcPlugin/CameraCallbacks.cpp b/xpcPlugin/CameraCallbacks.cpp new file mode 100644 index 0000000..bb839b2 --- /dev/null +++ b/xpcPlugin/CameraCallbacks.cpp @@ -0,0 +1,173 @@ +// +// support.cpp +// xpcPlugin +// +// Created by Kai Lehmkuehler on 14/01/2019. +// + +#include + +#include "MessageHandlers.h" +#include "DataManager.h" +#include "Log.h" + +#include "XPLMUtilities.h" +#include "XPLMGraphics.h" + + +#include +#include + +namespace XPC +{ + // Runway Camera Callback: Places the camera at campos.loc and points it at the aircraft, similar to a remote piloting experience. + // Optionally, the direction of the camera can be specified by the user. + int MessageHandlers::CamCallback_RunwayCam( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon) + { + if (outCameraPosition && !inIsLosingControl) + { + struct CameraProperties* campos = (struct CameraProperties*)inRefcon; + + // camera position + double clat = campos->loc[0]; + double clon = campos->loc[1]; + double calt = campos->loc[2]; + + double cX; + double cY; + double cZ; + XPLMWorldToLocal(clat, clon, calt, &cX, &cY, &cZ); + + outCameraPosition->x = cX; + outCameraPosition->y = cY; + outCameraPosition->z = cZ; + + // Log::FormatLine(LOG_TRACE, "CAM", "Cam pos %f %f %f", clat, clon, calt); + + // calculate camera direction to point at the aircraft + if(campos->direction[0] < -180) + { + // local aircraft position + double x = XPC::DataManager::GetDouble(XPC::DREF_LocalX, 0); + double y = XPC::DataManager::GetDouble(XPC::DREF_LocalY, 0); + double z = XPC::DataManager::GetDouble(XPC::DREF_LocalZ, 0); + + // relative position vector camera to aircraft + double dx = x - cX; + double dy = y - cY; + double dz = z - cZ; + + // Log::FormatLine(LOG_TRACE, "CAM", "Cam vect %f %f %f", dx, dy, dz); + + double pi = 3.141592653589793; + + // horizontal distance + double dist = sqrt(dx*dx + dz*dz); + + outCameraPosition->pitch = atan2(dy, dist) * 180.0/pi; + + double angle = atan2(dz, dx) * 180.0/pi; // rel to pos right (pos X) + + outCameraPosition->heading = 90 + angle; // rel to north + + // Log::FormatLine(LOG_TRACE, "CAM", "Cam p %f hdg %f ", outCameraPosition->pitch, outCameraPosition->heading); + + outCameraPosition->roll = 0; + } + // point camera at specified direction + else + { + outCameraPosition->roll = campos->direction[0]; + outCameraPosition->pitch = campos->direction[1]; + outCameraPosition->heading = campos->direction[2]; + } + + outCameraPosition->zoom = campos->zoom; + } + + return 1; + } + + // Chase Camera Callback: Places the camera at campos.loc RELATIVE to and MOVING with the aircraft, pointing at the specified + // direction. + int MessageHandlers::CamCallback_ChaseCam( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon) + { + if (outCameraPosition && !inIsLosingControl) + { + double DTR = 3.141592653589793 / 180.0; + + struct CameraProperties* campos = (struct CameraProperties*)inRefcon; + + // Camera location relative to aircraft (local axes) + + // local aircraft position + double x = XPC::DataManager::GetDouble(XPC::DREF_LocalX, 0); // +east + double y = XPC::DataManager::GetDouble(XPC::DREF_LocalY, 0); // +up + double z = XPC::DataManager::GetDouble(XPC::DREF_LocalZ, 0); // +south + + // aircraft attitude - degrees + double phi = XPC::DataManager::GetFloat(XPC::DREF_Roll, 0); + double the = XPC::DataManager::GetFloat(XPC::DREF_Pitch, 0); + double psi = XPC::DataManager::GetFloat(XPC::DREF_HeadingTrue, 0); + + // camera position vector with respect to aircraft CG [m] (body axes) + double c_x = campos->loc[0]; // back + double c_y = campos->loc[1]; // right + double c_z = campos->loc[2]; // up + + // camera position vector in local axes - will move with aircraft if not along principal axes + // cLocal = Leb * cBody + // http://www.xsquawkbox.net/xpsdk/mediawiki/ScreenCoordinates + + double x_phi=c_y*cos(phi*DTR) + c_z*sin(phi*DTR); + double y_phi=c_z*cos(phi*DTR) - c_y*sin(phi*DTR); + double z_phi=c_x; + + double x_the=x_phi; + double y_the=y_phi*cos(the*DTR) - z_phi*sin(the*DTR); + double z_the=z_phi*cos(the*DTR) + y_phi*sin(the*DTR); + + double x_wrl=x_the*cos(psi*DTR) - z_the*sin(psi*DTR); + double y_wrl=y_the ; + double z_wrl=z_the*cos(psi*DTR) + x_the*sin(psi*DTR); + + outCameraPosition->x = x + x_wrl; + outCameraPosition->y = y + y_wrl; + outCameraPosition->z = z + z_wrl; + + // set direction value to -998 to keep camera pointing straight along that axis + if(campos->direction[0] < -180) + { + outCameraPosition->roll = 0; + } + else + { + outCameraPosition->roll = phi + campos->direction[0]; + } + + if(campos->direction[1] < -180) + { + outCameraPosition->pitch = 0; + } + else + { + outCameraPosition->pitch = the + campos->direction[1]; + } + + if(campos->direction[2] < -180) + { + outCameraPosition->heading = 0; + } + else + { + outCameraPosition->heading = psi + campos->direction[2]; + } + + outCameraPosition->zoom = campos->zoom; + } + + return 1; + + } + +} diff --git a/xpcPlugin/MessageHandlers.cpp b/xpcPlugin/MessageHandlers.cpp index c6e7053..2556fef 100644 --- a/xpcPlugin/MessageHandlers.cpp +++ b/xpcPlugin/MessageHandlers.cpp @@ -14,6 +14,7 @@ // may be used to endorse or promote products derived from this software // without specific prior written permission from the authors or // Laminar Research, respectively. + #include "MessageHandlers.h" #include "DataManager.h" #include "Drawing.h" @@ -23,6 +24,7 @@ #include "XPLMScenery.h" #include "XPLMGraphics.h" + #include #include #include @@ -643,10 +645,10 @@ namespace XPC unsigned char aircraft = buffer[5]; Log::FormatLine(LOG_TRACE, "GETT", "Getting terrain information for aircraft %u", aircraft); - double loc[3]; - double X; - double Y; - double Z; + double loc[3]; + double X; + double Y; + double Z; memcpy(loc, buffer + 6, 24); if(loc[0] == -998 || loc[1] == -998 || loc[2] == -998) @@ -677,9 +679,9 @@ namespace XPC int rc = XPLMProbeTerrainXYZ(Terrain_probe, X, Y, Z, &probe_data); // transform probe location to world coordinates - double lat; - double lon; - double alt; + double lat; + double lon; + double alt; if(rc == 0) { @@ -818,106 +820,61 @@ namespace XPC { // Update Log Log::FormatLine(LOG_TRACE, "VIEW", "Message Received(Conn %i)", connection.id); - - int enable_camera_location = 0; - + + bool enable_advanced_camera = false; + const std::size_t size = msg.GetSize(); if (size == 9) { // default view switcher as before } - else if (size == 37) + else if (size == 49) { // Allow camera location control - enable_camera_location = 1; + enable_advanced_camera = true; } else { - Log::FormatLine(LOG_ERROR, "VIEW", "Error: Unexpected length. Message was %d bytes, expected 9 or 37.", size); + Log::FormatLine(LOG_ERROR, "VIEW", "Error: Unexpected length. Message was %d bytes, expected 9 or 49.", size); return; } + + // get msg data const unsigned char* buffer = msg.GetBuffer(); - int type = *((int*)(buffer + 5)); - XPLMCommandKeyStroke(type); - - if(type == 79 && enable_camera_location == 1) // runway camera view + + // get view type + int view_type; + memcpy(&view_type, buffer + 5, 4); + + // set view by calling the corresponding key stroke + XPLMCommandKeyStroke(view_type); + + + VIEW_TYPE viewRunway = VIEW_TYPE::XPC_VIEW_RUNWAY; + VIEW_TYPE viewChase = VIEW_TYPE::XPC_VIEW_CHASE; + + // advanced runway camera view + if(view_type == static_cast(viewRunway) && enable_advanced_camera == true) { - static struct CameraProperties campos; - - campos.loc[0] = *(double*)(buffer+9); - campos.loc[1] = *(double*)(buffer+17); - campos.loc[2] = *(double*)(buffer+25); - campos.direction[0] = -998; - campos.direction[1] = -998; - campos.direction[2] = -998; - campos.zoom = *(float*)(buffer+33); - - Log::FormatLine(LOG_TRACE, "VIEW", "Cam pos %f %f %f zoom %f", campos.loc[0], campos.loc[1], campos.loc[2],campos.zoom); - - XPLMControlCamera(xplm_ControlCameraUntilViewChanges, CamFunc, &campos); + static struct CameraProperties campos; // static variable for continuous callback access + + memcpy(&campos, buffer+9 , sizeof(struct CameraProperties)); + + Log::FormatLine(LOG_TRACE, "VIEW", "Cam pos %f %f %f zoom %f", campos.loc[0], campos.loc[1], campos.loc[2], campos.zoom); + + XPLMControlCamera(xplm_ControlCameraUntilViewChanges, CamCallback_RunwayCam, &campos); } - } - - int MessageHandlers::CamFunc( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon) - { - if (outCameraPosition && !inIsLosingControl) + // advanced chase camera view + else if(view_type == static_cast(viewChase) && enable_advanced_camera == true) { - struct CameraProperties* campos = (struct CameraProperties*)inRefcon; - - // camera position - double clat = campos->loc[0]; - double clon = campos->loc[1]; - double calt = campos->loc[2]; - - double cX, cY, cZ; - XPLMWorldToLocal(clat, clon, calt, &cX, &cY, &cZ); - - outCameraPosition->x = cX; - outCameraPosition->y = cY; - outCameraPosition->z = cZ; - -// Log::FormatLine(LOG_TRACE, "CAM", "Cam pos %f %f %f", clat, clon, calt); - - if(campos->direction[0] == -998) // calculate camera direction - { - // aircraft position - double x = XPC::DataManager::GetDouble(XPC::DREF_LocalX, 0); - double y = XPC::DataManager::GetDouble(XPC::DREF_LocalY, 0); - double z = XPC::DataManager::GetDouble(XPC::DREF_LocalZ, 0); - - // relative position vector cam to plane - double dx = x - cX; - double dy = y - cY; - double dz = z - cZ; - -// Log::FormatLine(LOG_TRACE, "CAM", "Cam vect %f %f %f", dx, dy, dz); - - double pi = 3.141592653589793; - - // horizontal distance - double dist = sqrt(dx*dx + dz*dz); - - outCameraPosition->pitch = atan2(dy, dist) * 180.0/pi; - - double angle = atan2(dz, dx) * 180.0/pi; // rel to pos right (pos X) - - outCameraPosition->heading = 90 + angle; // rel to north - -// Log::FormatLine(LOG_TRACE, "CAM", "Cam p %f hdg %f ", outCameraPosition->pitch, outCameraPosition->heading); - - outCameraPosition->roll = 0; - } - else - { - outCameraPosition->roll = campos->direction[0]; - outCameraPosition->pitch = campos->direction[1]; - outCameraPosition->heading = campos->direction[2]; - } - - outCameraPosition->zoom = campos->zoom; + static struct CameraProperties campos; // static variable for continuous callback access + + memcpy(&campos, buffer+9 , sizeof(struct CameraProperties)); + + Log::FormatLine(LOG_TRACE, "VIEW", "Cam pos %f %f %f zoom %f", campos.loc[0], campos.loc[1], campos.loc[2], campos.zoom); + + XPLMControlCamera(xplm_ControlCameraUntilViewChanges, CamCallback_ChaseCam, &campos); } - - return 1; } void MessageHandlers::HandleWypt(const Message& msg) diff --git a/xpcPlugin/MessageHandlers.h b/xpcPlugin/MessageHandlers.h index 8753d00..096a4b6 100644 --- a/xpcPlugin/MessageHandlers.h +++ b/xpcPlugin/MessageHandlers.h @@ -14,6 +14,23 @@ namespace XPC { /// A function that handles a message. typedef void(*MessageHandler)(const Message&); + + enum class VIEW_TYPE + { + XPC_VIEW_FORWARDS = 73, + XPC_VIEW_DOWN, + XPC_VIEW_LEFT, + XPC_VIEW_RIGHT, + XPC_VIEW_BACK, + XPC_VIEW_TOWER, + XPC_VIEW_RUNWAY, + XPC_VIEW_CHASE, + XPC_VIEW_FOLLOW, + XPC_VIEW_FOLLOWWITHPANEL, + XPC_VIEW_SPOT, + XPC_VIEW_FULLSCREENWITHHUD, + XPC_VIEW_FULLSCREENNOHUD, + }; /// Handles incoming messages and manages connections. /// @@ -61,7 +78,8 @@ namespace XPC static void HandleXPlaneData(const Message& msg); static void HandleUnknown(const Message& msg); - static int CamFunc( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon); + static int CamCallback_RunwayCam( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon); + static int CamCallback_ChaseCam( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon); struct CameraProperties{ double loc[3]; diff --git a/xpcPlugin/xpcPlugin.xcodeproj/project.pbxproj b/xpcPlugin/xpcPlugin.xcodeproj/project.pbxproj index a888911..9112e86 100755 --- a/xpcPlugin/xpcPlugin.xcodeproj/project.pbxproj +++ b/xpcPlugin/xpcPlugin.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 3D0F44CE21C6D3E7008A0655 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D0F44CD21C6D3E7008A0655 /* Timer.cpp */; }; + 5B36040D23731E4A003ACE12 /* CameraCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5B36040C23731E4A003ACE12 /* CameraCallbacks.cpp */; }; BE37D960187C8B0F0033B082 /* XPCPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE37D95E187C8B0F0033B082 /* XPCPlugin.cpp */; }; BE8361EF18C5591C00E9C923 /* mac.xpl in CopyFiles */ = {isa = PBXBuildFile; fileRef = D607B19909A556E400699BC3 /* mac.xpl */; }; BEABAD371AE041A3007BA7DA /* DataManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEABAD2B1AE041A3007BA7DA /* DataManager.cpp */; }; @@ -39,6 +40,7 @@ /* Begin PBXFileReference section */ 3D0F44CC21C6D3E7008A0655 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Timer.h; sourceTree = ""; }; 3D0F44CD21C6D3E7008A0655 /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Timer.cpp; sourceTree = ""; }; + 5B36040C23731E4A003ACE12 /* CameraCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CameraCallbacks.cpp; sourceTree = ""; }; BE37D95E187C8B0F0033B082 /* XPCPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XPCPlugin.cpp; sourceTree = SOURCE_ROOT; usesTabs = 1; }; BEABAD2B1AE041A3007BA7DA /* DataManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataManager.cpp; sourceTree = ""; }; BEABAD2C1AE041A3007BA7DA /* DataManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataManager.h; sourceTree = ""; }; @@ -53,7 +55,6 @@ BEABAD3D1AE0498D007BA7DA /* UDPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UDPSocket.cpp; sourceTree = ""; }; BEABAD3E1AE0498D007BA7DA /* UDPSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UDPSocket.h; sourceTree = ""; }; BEDC620218EDF1A7005DB364 /* xplaneConnect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xplaneConnect.c; path = ../C/src/xplaneConnect.c; sourceTree = ""; }; - BEDC620318EDF1A7005DB364 /* xplaneConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xplaneConnect.h; path = ../C/src/xplaneConnect.h; sourceTree = ""; }; D607B19909A556E400699BC3 /* mac.xpl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = mac.xpl; sourceTree = BUILT_PRODUCTS_DIR; }; D6A7BDA916A1DEA200D1426A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; D6A7BDC016A1DEC000D1426A /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; @@ -79,6 +80,7 @@ AC4E46B809C2E0B3006B7E1B /* src */ = { isa = PBXGroup; children = ( + 5B36040C23731E4A003ACE12 /* CameraCallbacks.cpp */, 3D0F44CD21C6D3E7008A0655 /* Timer.cpp */, BE37D95E187C8B0F0033B082 /* XPCPlugin.cpp */, BEDC620218EDF1A7005DB364 /* xplaneConnect.c */, @@ -96,7 +98,6 @@ isa = PBXGroup; children = ( 3D0F44CC21C6D3E7008A0655 /* Timer.h */, - BEDC620318EDF1A7005DB364 /* xplaneConnect.h */, BEABAD2C1AE041A3007BA7DA /* DataManager.h */, BEABAD301AE041A3007BA7DA /* Drawing.h */, BEABAD321AE041A3007BA7DA /* Log.h */, @@ -191,6 +192,7 @@ files = ( BEABAD3A1AE041A3007BA7DA /* Log.cpp in Sources */, BEABAD3B1AE041A3007BA7DA /* Message.cpp in Sources */, + 5B36040D23731E4A003ACE12 /* CameraCallbacks.cpp in Sources */, BEABAD3C1AE041A3007BA7DA /* MessageHandlers.cpp in Sources */, BEDC620418EDF1A7005DB364 /* xplaneConnect.c in Sources */, BEABAD371AE041A3007BA7DA /* DataManager.cpp in Sources */, diff --git a/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj b/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj index 2c2c85b..a8de464 100644 --- a/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj +++ b/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj @@ -1,231 +1,232 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {6AEF5D28-2701-44FF-AE10-1DEF07C5CAEA} - Win32Proj - xpcPlugin - 8.1 - - - - DynamicLibrary - true - $(DefaultPlatformToolset) - MultiByte - - - DynamicLibrary - true - $(DefaultPlatformToolset) - MultiByte - - - DynamicLibrary - true - $(DefaultPlatformToolset) - MultiByte - - - DynamicLibrary - true - $(DefaultPlatformToolset) - MultiByte - - - - - - - - - - - - - - - - - - - true - ..\XPlaneConnect\ - .xpl - ..\SDK\CHeaders\XPLM;$(IncludePath) - ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) - win - - - true - ..\XPlaneConnect\ - .xpl - ..\SDK\CHeaders\XPLM;$(IncludePath) - ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) - win - - - .xpl - ..\xpcPlugin\SDK\CHeaders\XPLM;..\SDK\CHeaders\XPLM;..\..\C\src;$(IncludePath) - ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) - win - true - ..\XPlaneConnect\64\ - - - .xpl - ..\xpcPlugin\SDK\CHeaders\XPLM;..\SDK\CHeaders\XPLM;..\..\C\src;$(IncludePath) - ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) - win - true - ..\XPlaneConnect\64\ - - - - NotUsing - Level3 - Disabled - IBM=1;XPLM200;_DEBUG;_WINDOWS;_USRDLL;XPCPLUGIN_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - OldStyle - true - - false - - - false - MultiThreadedDebug - - - Windows - true - Opengl32.lib;%(AdditionalDependencies) - - - - - NotUsing - Level3 - Full - IBM=1;XPLM200;%(PreprocessorDefinitions) - OldStyle - true - - - false - - - false - MultiThreaded - Default - true - false - - - Windows - false - Opengl32.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - true - - - - - NotUsing - Level3 - Disabled - IBM=1;XPLM200;_DEBUG;_WINDOWS;_USRDLL;XPCPLUGIN_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - - - OldStyle - true - - - false - 4996 - false - MultiThreadedDebug - - - Windows - true - OpenGL32.lib;%(AdditionalDependencies) - - - - - NotUsing - Level3 - Full - IBM=1;XPLM200;%(PreprocessorDefinitions) - - - OldStyle - true - - - false - - - false - MultiThreaded - Default - true - - false - - - Windows - false - OpenGL32.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {6AEF5D28-2701-44FF-AE10-1DEF07C5CAEA} + Win32Proj + xpcPlugin + 10.0.17134.0 + + + + DynamicLibrary + true + $(DefaultPlatformToolset) + MultiByte + + + DynamicLibrary + true + $(DefaultPlatformToolset) + MultiByte + + + DynamicLibrary + true + $(DefaultPlatformToolset) + MultiByte + + + DynamicLibrary + true + $(DefaultPlatformToolset) + MultiByte + + + + + + + + + + + + + + + + + + + true + ..\XPlaneConnect\ + .xpl + ..\SDK\CHeaders\XPLM;$(IncludePath) + ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) + win + + + true + ..\XPlaneConnect\ + .xpl + ..\SDK\CHeaders\XPLM;$(IncludePath) + ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) + win + + + .xpl + ..\xpcPlugin\SDK\CHeaders\XPLM;..\SDK\CHeaders\XPLM;..\..\C\src;$(IncludePath) + ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) + win + true + ..\XPlaneConnect\64\ + + + .xpl + ..\xpcPlugin\SDK\CHeaders\XPLM;..\SDK\CHeaders\XPLM;..\..\C\src;$(IncludePath) + ..\xpcPlugin\SDK\Libraries\Win;$(LibraryPath) + win + true + ..\XPlaneConnect\64\ + + + + NotUsing + Level3 + Disabled + IBM=1;XPLM200;_DEBUG;_WINDOWS;_USRDLL;XPCPLUGIN_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + OldStyle + true + + false + + + false + MultiThreadedDebug + + + Windows + true + Opengl32.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Full + IBM=1;XPLM200;%(PreprocessorDefinitions) + OldStyle + true + + + false + + + false + MultiThreaded + Default + true + false + + + Windows + false + Opengl32.lib;%(AdditionalDependencies) + UseLinkTimeCodeGeneration + true + + + + + NotUsing + Level3 + Disabled + IBM=1;XPLM200;_DEBUG;_WINDOWS;_USRDLL;XPCPLUGIN_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + OldStyle + true + + + false + 4996 + false + MultiThreadedDebug + + + Windows + true + OpenGL32.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Full + IBM=1;XPLM200;%(PreprocessorDefinitions) + + + OldStyle + true + + + false + + + false + MultiThreaded + Default + true + + false + + + Windows + false + OpenGL32.lib;%(AdditionalDependencies) + UseLinkTimeCodeGeneration + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj.filters b/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj.filters index e62f3d6..5b9a631 100644 --- a/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj.filters +++ b/xpcPlugin/xpcPlugin/xpcPlugin.vcxproj.filters @@ -1,74 +1,83 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + \ No newline at end of file