diff --git a/CHANGELOG.md b/CHANGELOG.md index fadb602..5e41b90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # xplm-sys changelog +## 0.5.2 - yyyy-mm-dd + +* Updated X-Plane SDK to version 4.2.0 + ## 0.5.1 - 2024-11-13 * Updated X-Plane SDK to version 4.1.1 diff --git a/Cargo.toml b/Cargo.toml index fa69135..846daf7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xplm-sys" -version = "0.5.1" +version = "0.5.2" authors = ["Sam Crow "] description = "Low-level bindings for the X-Plane plugin SDK" repository = "https://github.com/samcrow/xplm-sys" diff --git a/SDK/CHeaders/XPLM/XPLMDefs.h b/SDK/CHeaders/XPLM/XPLMDefs.h index 7ad9b89..247dc70 100644 --- a/SDK/CHeaders/XPLM/XPLMDefs.h +++ b/SDK/CHeaders/XPLM/XPLMDefs.h @@ -154,8 +154,8 @@ typedef int XPLMPluginID; /* X-Plane itself */ #define XPLM_PLUGIN_XPLANE (0) -/* The current XPLM revision is 4.1.1 (411). */ -#define kXPLM_Version (411) +/* The current XPLM revision is 4.2.1 (421). */ +#define kXPLM_Version (421) /* * XPLMKeyFlags @@ -538,6 +538,111 @@ enum { /* X-Plane shows the cursor but lets you select an OS cursor. */ xplm_CursorCustom = 3, +#if defined(XPLM420) + /* X-Plane shows a small bi-directional knob-rotating cursor. */ + xplm_CursorRotateSmall = 4, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a small counter-clockwise knob-rotating cursor. */ + xplm_CursorRotateSmallLeft = 5, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a small clockwise knob-rotating cursor. */ + xplm_CursorRotateSmallRight = 6, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a medium bi-directional knob-rotating cursor. */ + xplm_CursorRotateMedium = 7, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a medium counter-clockwise knob-rotating cursor. */ + xplm_CursorRotateMediumLeft = 8, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a medium clockwise knob-rotating cursor. */ + xplm_CursorRotateMediumRight = 9, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a large bi-directional knob-rotating cursor. */ + xplm_CursorRotateLarge = 10, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a large counter-clockwise knob-rotating cursor. */ + xplm_CursorRotateLargeLeft = 11, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a large clockwise knob-rotating cursor. */ + xplm_CursorRotateLargeRight = 12, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows an up-and-down arrows cursor. */ + xplm_CursorUpDown = 13, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a down arrow cursor. */ + xplm_CursorDown = 14, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows an up arrow cursor. */ + xplm_CursorUp = 15, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a left-right arrow cursor. */ + xplm_CursorLeftRight = 16, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a left arrow cursor. */ + xplm_CursorLeft = 17, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a right arrow cursor. */ + xplm_CursorRight = 18, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a button-pushing cursor. */ + xplm_CursorButton = 19, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a handle-grabbing cursor. */ + xplm_CursorHandle = 20, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a four-arrows cursor. */ + xplm_CursorFourArrows = 21, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a cursor to drag a horizontal splitter bar. */ + xplm_CursorSplitterH = 22, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows a cursor to drag a vertical splitter bar. */ + xplm_CursorSplitterV = 23, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* X-Plane shows an I-Beam cursor for text editing. */ + xplm_CursorText = 24, + +#endif /* XPLM420 */ }; typedef int XPLMCursorStatus; diff --git a/SDK/CHeaders/XPLM/XPLMGraphics.h b/SDK/CHeaders/XPLM/XPLMGraphics.h index f05cb1c..3717379 100644 --- a/SDK/CHeaders/XPLM/XPLMGraphics.h +++ b/SDK/CHeaders/XPLM/XPLMGraphics.h @@ -82,6 +82,18 @@ enum { xplm_Tex_AircraftLiteMap = 2, #endif /* XPLM_DEPRECATED */ +#if defined(XPLM420) + /* The weather radar instrument texture as controlled by the pilot-side radar * + * controls */ + xplm_Tex_Radar_Pilot = 3, + +#endif /* XPLM420 */ +#if defined(XPLM420) + /* The weather radar instrument texture as controlled by the * + * copilot-side radar controls */ + xplm_Tex_Radar_Copilot = 4, + +#endif /* XPLM420 */ }; typedef int XPLMTextureID; @@ -177,18 +189,16 @@ XPLM_API void XPLMGenerateTextureNumbers( int * outTextureIDs, int inCount); -#if defined(XPLM_DEPRECATED) /* * XPLMGetTexture * * XPLMGetTexture returns the OpenGL texture ID of an X-Plane texture based on * a generic identifying code. For example, you can get the texture for - * X-Plane's UI bitmaps. + * X-Plane's weather radar. * */ XPLM_API int XPLMGetTexture( XPLMTextureID inTexture); -#endif /* XPLM_DEPRECATED */ /* * XPLMWorldToLocal diff --git a/SDK/CHeaders/XPLM/XPLMInstance.h b/SDK/CHeaders/XPLM/XPLMInstance.h index f2460fb..8874bc0 100644 --- a/SDK/CHeaders/XPLM/XPLMInstance.h +++ b/SDK/CHeaders/XPLM/XPLMInstance.h @@ -87,6 +87,22 @@ XPLM_API XPLMInstanceRef XPLMCreateInstance( XPLMObjectRef obj, const char ** datarefs); +#if defined(XPLM420) +/* + * XPLMInstanceSetAutoShift + * + * XPLMInstanceSetAutoShift tells X-Plane to move the location of your + * instance every time the sim\'s local coordinate sytem changes, so that a + * static instance does not have to be moved. Without this, a plugin is + * responsible for updating an instance's local position when the coordinate + * system shifts. Use this for static instances that you would not otherwise + * have to move. + * + */ +XPLM_API void XPLMInstanceSetAutoShift( + XPLMInstanceRef instance); +#endif /* XPLM420 */ + /* * XPLMDestroyInstance * @@ -129,6 +145,29 @@ XPLM_API void XPLMInstanceSetPosition( const XPLMDrawInfo_t * new_position, const float * data); +#if defined(XPLM420) +/* + * XPLMInstanceSetPositionDouble + * + * Updates both the position of the instance and all datarefs you registered + * for it. Call this from a flight loop callback or UI callback. + * + * __DO_NOT__ call XPLMInstanceSetPositionDouble from a drawing callback; the + * whole point of instancing is that you do not need any drawing callbacks. + * Setting instance data from a drawing callback may have undefined + * consequences, and the drawing callback hurts FPS unnecessarily. + * + * The memory pointed to by the data pointer must be large enough to hold one + * float for every dataref you have registered, and must contain valid + * floating point data. + * + */ +XPLM_API void XPLMInstanceSetPositionDouble( + XPLMInstanceRef instance, + const XPLMDrawInfoDouble_t * new_position, + const float * data); +#endif /* XPLM420 */ + #ifdef __cplusplus } #endif diff --git a/SDK/CHeaders/XPLM/XPLMScenery.h b/SDK/CHeaders/XPLM/XPLMScenery.h index d15f83d..e4fa116 100644 --- a/SDK/CHeaders/XPLM/XPLMScenery.h +++ b/SDK/CHeaders/XPLM/XPLMScenery.h @@ -276,6 +276,33 @@ typedef struct { } XPLMDrawInfo_t; #endif /* XPLM200 */ +#if defined(XPLM420) +/* + * XPLMDrawInfoDouble_t + * + * The XPLMDrawInfo_t structure contains positioning info for one object that + * is to be drawn. Be sure to set structSize to the size of the structure for + * future expansion. + * + */ +typedef struct { + /* Set this to the size of this structure! */ + int structSize; + /* X location of the object in local coordinates. */ + double x; + /* Y location of the object in local coordinates. */ + double y; + /* Z location of the object in local coordinates. */ + double z; + /* Pitch in degres to rotate the object, positive is up. */ + double pitch; + /* Heading in local coordinates to rotate the object, clockwise. */ + double heading; + /* Roll to rotate the object. */ + double roll; +} XPLMDrawInfoDouble_t; +#endif /* XPLM420 */ + #if defined(XPLM210) /* * XPLMObjectLoaded_f diff --git a/SDK/CHeaders/XPLM/XPLMWeather.h b/SDK/CHeaders/XPLM/XPLMWeather.h index 3f1f50f..d8e355a 100644 --- a/SDK/CHeaders/XPLM/XPLMWeather.h +++ b/SDK/CHeaders/XPLM/XPLMWeather.h @@ -12,6 +12,13 @@ ***************************************************************************/ /* * This provides access to the X-Plane 12 enhanced weather system. + * + * ALL FUNCTIONS RELATING TO UPDATING THE WEATHER ARE CURRENTLY EXPERIMENTAL, + * FOR EVALUATION. + * + * The API will be kept stable if at all possible during the evaluation + * period. The details of how the data is processed will change over time as + * the weather engine changes, even after the API is stabilised. * */ @@ -21,6 +28,7 @@ extern "C" { #endif +#if defined(XPLM400) /*************************************************************************** * WEATHER ACCESS ***************************************************************************/ @@ -30,13 +38,14 @@ extern "C" { * */ typedef struct { - /* Altitude MSL, meters */ + /* Altitude MSL, meters. */ float alt_msl; - /* Wind speed, meters/sec */ + /* Wind speed, meters/sec. When setting, use a negative value to signify * + * 'undefined'. */ float speed; /* Direction (true) */ float direction; - /* Gust speed, meters/sec */ + /* Gust speed, meters/sec. Total speed, not increase above wind speed. */ float gust_speed; /* Shear arc, degrees i.e. 50% of this arc in either direction from base */ float shear; @@ -59,36 +68,72 @@ typedef struct { float alt_base; } XPLMWeatherInfoClouds_t; +/* The number of wind layers that are expected in the latest version of * + * XPLMWeatherInfo_t . */ +#define XPLM_NUM_WIND_LAYERS 13 + +/* The number of cloud layers that are expected in the latest version of * + * XPLMWeatherInfo_t . */ +#define XPLM_NUM_CLOUD_LAYERS 3 + +#if defined(XPLM420) +/* The number of temperature layers that are expected in the latest version of* + * XPLMWeatherInfo_t . */ +#define XPLM_NUM_TEMPERATURE_LAYERS 13 +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* Use this value to designate a wind layer as undefined when setting. */ +#define XPLM_WIND_UNDEFINED_LAYER -1 +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* Default radius of weather data points set using XPLMSetWeatherAtLocation * + * and XPLMSetWeatherAtAirport. */ +#define XPLM_DEFAULT_WXR_RADIUS_NM 30 +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* Default vertical radius of effect of weather data points set using * + * XPLMSetWeatherAtLocation and XPLMSetWeatherAtAirport. */ +#define XPLM_DEFAULT_WXR_RADIUS_MSL_FT 10000 +#endif /* XPLM420 */ + /* * XPLMWeatherInfo_t * - * Basic weather conditions at a specific point. + * Basic weather conditions at a specific point. To specify exactly what data + * you intend to send or receive, it is required to set the structSize + * appropriately. + * + * Version 2 data starts at "temp_layers". * */ typedef struct { - /* The size of the struct. */ + /* The size of the struct. Required for both reading and writing. */ int structSize; /* Temperature at the given altitude in Celsius */ float temperature_alt; /* Dewpoint at the given altitude in Celsius */ float dewpoint_alt; - /* Pressure at the given altitude in Pascals */ + /* Pressure at the given altitude in Pascals. Pass 0 when setting to use * + * sea-level pressure instead of QNH. */ float pressure_alt; - /* Precipitation rate at the given altitude */ + /* Precipitation rate at the given altitude. Unused when setting. */ float precip_rate_alt; - /* Wind direction at the given altitude */ + /* Wind direction at the given altitude. Unused when setting. */ float wind_dir_alt; - /* Wind speed at the given altitude, meters/sec */ + /* Wind speed at the given altitude, meters/sec. Unused when setting. */ float wind_spd_alt; - /* Turbulence ratio at the given altitude */ + /* Turbulence ratio at the given altitude. Unused when setting. */ float turbulence_alt; /* Height of water waves in meters */ float wave_height; - /* Length of water waves in meters */ + /* Length of water waves in meters. Unused when setting. */ float wave_length; /* Direction from which water waves are coming */ int wave_dir; - /* Speed of wave advance in meters/sec */ + /* Speed of wave advance in meters/sec. Unused when setting. */ float wave_speed; /* Base visibility at 0 altitude, meters */ float visibility; @@ -96,40 +141,73 @@ typedef struct { float precip_rate; /* Climb rate due to thermals, meters/sec */ float thermal_climb; - /* Pressure at 0 altitude in Pascals */ + /* Pressure at sealevel in Pascals. Used when setting ONLY if pressure_alt * + * (i.e. QNH) is not valid. */ float pressure_sl; /* Defined wind layers. Not all layers are always defined. */ - XPLMWeatherInfoWinds_t wind_layers[13]; + XPLMWeatherInfoWinds_t wind_layers[XPLM_NUM_WIND_LAYERS]; /* Defined cloud layers. Not all layers are always defined. */ - XPLMWeatherInfoClouds_t cloud_layers[3]; + XPLMWeatherInfoClouds_t cloud_layers[XPLM_NUM_CLOUD_LAYERS]; +#if defined(XPLM420) + /* Temperatures at altitude, in degrees C. Layer altitudes are the same * + * globally - see the 'sim/weather/region/atmosphere_alt_levels_m' dataref. */ + float temp_layers[XPLM_NUM_TEMPERATURE_LAYERS]; +#endif /* XPLM420 */ +#if defined(XPLM420) + /* Dewpoints at altitude, in degrees C. Layer altitudes are the same globally * + * - see the 'sim/weather/region/atmosphere_alt_levels_m' dataref. */ + float dewp_layers[XPLM_NUM_TEMPERATURE_LAYERS]; +#endif /* XPLM420 */ +#if defined(XPLM420) + /* The altitude in MSL of the troposphere. */ + float troposphere_alt; +#endif /* XPLM420 */ +#if defined(XPLM420) + /* The temperature in degrees C of the troposphere. */ + float troposphere_temp; +#endif /* XPLM420 */ +#if defined(XPLM420) + /* Age in seconds of this weather report. Age affects how strongly the report * + * affects the resulting weather. */ + float age; +#endif /* XPLM420 */ +#if defined(XPLM420) + /* Horizontal radius of effect of this weather report, nautical miles. */ + float radius_nm; +#endif /* XPLM420 */ +#if defined(XPLM420) + /* Vertical radius of effect of this weather report, feet MSL. */ + float max_altitude_msl_ft; +#endif /* XPLM420 */ } XPLMWeatherInfo_t; -#if defined(XPLM400) /* * XPLMGetMETARForAirport * * Get the last-downloaded METAR report for an airport by ICAO code. Note that * the actual weather at that airport may have evolved significantly since the * last downloaded METAR. outMETAR must point to a char buffer of at least 150 - * characters. This call is not intended to be used per-frame. This call does - * not return the current weather at the airport, and returns an empty string - * if the system is not in real-weather mode. + * characters. THIS CALL DOES NOT RETURN THE CURRENT WEATHER AT THE AIRPORT, + * and returns an empty string if the system is not in real-weather mode. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. * */ XPLM_API void XPLMGetMETARForAirport( const char * airport_id, XPLMFixedString150_t * outMETAR); -#endif /* XPLM400 */ -#if defined(XPLM400) /* * XPLMGetWeatherAtLocation * * Get the current weather conditions at a given location. Note that this does * not work world-wide, only within the surrounding region. Return 1 if * detailed weather (i.e. an airport-specific METAR) was found, 0 if not. In - * both cases, the structure will contain the best data available. This call - * is not intended to be used per-frame. + * both cases, the structure will contain the best data available. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. * */ XPLM_API int XPLMGetWeatherAtLocation( @@ -137,8 +215,149 @@ XPLM_API int XPLMGetWeatherAtLocation( double longitude, double altitude_m, XPLMWeatherInfo_t * out_info); -#endif /* XPLM400 */ +#if defined(XPLM420) +/* + * XPLMBeginWeatherUpdate + * + * Inform the simulator that you are starting a batch update of weather + * information. If you are providing multiple weather updates, using this call + * may improve performance by telling the simulator not to update weather + * until you are done. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. You must call XPLMEndWeatherUpdate + * before you return from the callback; XPLMBeginWeatherUpdate in one callback + * and XPLMEndWeatherUpdate in a later callback, even within the same frame, + * is not permitted. + * + */ +XPLM_API void XPLMBeginWeatherUpdate(void); +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* + * XPLMEndWeatherUpdate + * + * Inform the simulator that you are ending a batch update of weather + * information. If you have called XPLMBeginWeatherUpdate, you MUST call + * XPLMEndWeatherUpdate before exiting your callback otherwise any accumulated + * weather data will be discarded. + * + * When using incremental mode, any changes made are applied to your existing + * data. This makes it possible to only update a fraction of your weather data + * at any one time. When not using incremental mode, ALL reports previously + * passed by your plugin are erased before applying new data. + * + * When using any of these 'weather set' APIs, the normal mode of operation is + * that you are setting the weather in the near future. Currently this is + * somewhere between one and two minutes but do not rely on this remaining the + * same. + * + * Setting future weather ensures that there is no sudden jump in weather + * conditions when you make a change mid-cycle. In some situations, notably + * for an initial setup, you may want to ensure that the weather is changed + * instantly. To do this, set 'updateImmediately' as true. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. + * + */ +XPLM_API void XPLMEndWeatherUpdate( + int isIncremental, + int updateImmediately); +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* + * XPLMSetWeatherAtLocation + * + * Set the current weather conditions at a given location. Please see the + * notes on individual fields in XPLMSetWeatherAtAirport, and notes on timing + * in XPLMEndWeatherUpdate. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. + * + */ +XPLM_API void XPLMSetWeatherAtLocation( + double latitude, + double longitude, + double altitude_m, + XPLMWeatherInfo_t * in_info); +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* + * XPLMEraseWeatherAtLocation + * + * Erase weather conditions set by your plugin at a given location. You must + * give exactly the same coordinates that you used to create a weather record + * at this point. It does NOT mean 'create clear weather at this location'. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. + * + */ +XPLM_API void XPLMEraseWeatherAtLocation( + double latitude, + double longitude); +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* + * XPLMSetWeatherAtAirport + * + * Set the current weather conditions at a given airport. Unlike + * XPLMSetWeatherAtLocation, this call will replace any existing weather + * records for that airport from other sources (i.e. downloaded METARs) + * instead of being used as just another weather sample. + * + * Some notes on individual fields: + * - pressure_alt should be QNH as reported by a station at the ground + * altitude given, or 0 if you are passing sealevel pressure in + * 'pressure_sl' instead. + * - pressure_sl is ignored if pressure_alt is given. + * - wind_dir_alt, wind_spd_alt, turbulence_alt, wave_speed, wave_length are + * derived from other data and are UNUSED when setting weather. + * - Temperatures can be given either as a single temperature at the ground + * altitude (temperature_alt) OR as an array of temperatures aloft + * (temp_layers), if the struct is V2 or higher. If you wish to use the V2 + * struct and still provide a single ground-level temperature, pass -100 + * or lower as the first element of the temp_layers array. In this case, + * existing weather at that point will be used for temperatures at + * altitude. + * - The same rules apply to dewpoint temperatures; either a single value at + * ground level in 'dewpoint_alt', or per-layer values in 'dewp_layers'. + * - The troposphere altitude and temperature will be derived from existing + * data if you pass 0 or lower for troposphere_alt. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. + * + */ +XPLM_API void XPLMSetWeatherAtAirport( + const char * airport_id, + XPLMWeatherInfo_t * in_info); +#endif /* XPLM420 */ + +#if defined(XPLM420) +/* + * XPLMEraseWeatherAtAirport + * + * Erase the current weather conditions set by your plugin at a given airport, + * allowing records from other sources to be used. It does NOT mean 'create + * clear weather at this airport'. + * + * This call is not intended to be used per-frame. It should be called only + * during the pre-flight loop callback. + * + */ +XPLM_API void XPLMEraseWeatherAtAirport( + const char * airport_id); +#endif /* XPLM420 */ + +#endif /* XPLM400 */ #ifdef __cplusplus } #endif diff --git a/SDK/Libraries/Lin/XPLM_64.so b/SDK/Libraries/Lin/XPLM_64.so new file mode 100755 index 0000000..bc9ceae Binary files /dev/null and b/SDK/Libraries/Lin/XPLM_64.so differ diff --git a/SDK/Libraries/Lin/XPWidgets_64.so b/SDK/Libraries/Lin/XPWidgets_64.so new file mode 100755 index 0000000..05bd1ec Binary files /dev/null and b/SDK/Libraries/Lin/XPWidgets_64.so differ diff --git a/SDK/Libraries/Mac/XPLM.framework/Resources b/SDK/Libraries/Mac/XPLM.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/SDK/Libraries/Mac/XPLM.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/SDK/Libraries/Mac/XPLM.framework/Resources/Info.plist b/SDK/Libraries/Mac/XPLM.framework/Resources/Info.plist deleted file mode 100644 index 53b5610..0000000 --- a/SDK/Libraries/Mac/XPLM.framework/Resources/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - BuildMachineOSBuild - 22C65 - CFBundleDevelopmentRegion - English - CFBundleExecutable - XPLM - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - MacOSX - - CSResourcesFileMapped - - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 14C18 - DTPlatformName - macosx - DTPlatformVersion - 13.1 - DTSDKBuild - 22C55 - DTSDKName - macosx13.1 - DTXcode - 1420 - DTXcodeBuild - 14C18 - LSMinimumSystemVersion - 10.15 - - diff --git a/SDK/Libraries/Mac/XPLM.framework/Versions/C/XPLM b/SDK/Libraries/Mac/XPLM.framework/Versions/C/XPLM index 1ea059f..3b0813c 100755 Binary files a/SDK/Libraries/Mac/XPLM.framework/Versions/C/XPLM and b/SDK/Libraries/Mac/XPLM.framework/Versions/C/XPLM differ diff --git a/SDK/Libraries/Mac/XPLM.framework/Versions/Current b/SDK/Libraries/Mac/XPLM.framework/Versions/Current new file mode 120000 index 0000000..96d80cd --- /dev/null +++ b/SDK/Libraries/Mac/XPLM.framework/Versions/Current @@ -0,0 +1 @@ +C \ No newline at end of file diff --git a/SDK/Libraries/Mac/XPLM.framework/Versions/Current/Resources/Info.plist b/SDK/Libraries/Mac/XPLM.framework/Versions/Current/Resources/Info.plist deleted file mode 100644 index 53b5610..0000000 --- a/SDK/Libraries/Mac/XPLM.framework/Versions/Current/Resources/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - BuildMachineOSBuild - 22C65 - CFBundleDevelopmentRegion - English - CFBundleExecutable - XPLM - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - MacOSX - - CSResourcesFileMapped - - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 14C18 - DTPlatformName - macosx - DTPlatformVersion - 13.1 - DTSDKBuild - 22C55 - DTSDKName - macosx13.1 - DTXcode - 1420 - DTXcodeBuild - 14C18 - LSMinimumSystemVersion - 10.15 - - diff --git a/SDK/Libraries/Mac/XPLM.framework/Versions/Current/XPLM b/SDK/Libraries/Mac/XPLM.framework/Versions/Current/XPLM deleted file mode 100755 index 1ea059f..0000000 Binary files a/SDK/Libraries/Mac/XPLM.framework/Versions/Current/XPLM and /dev/null differ diff --git a/SDK/Libraries/Mac/XPLM.framework/Versions/Current/_CodeSignature/CodeResources b/SDK/Libraries/Mac/XPLM.framework/Versions/Current/_CodeSignature/CodeResources deleted file mode 100644 index 1e37a64..0000000 --- a/SDK/Libraries/Mac/XPLM.framework/Versions/Current/_CodeSignature/CodeResources +++ /dev/null @@ -1,128 +0,0 @@ - - - - - files - - Resources/Info.plist - - voAQ/IDgQqHZqcOEgtUnY+ZQ4Vo= - - - files2 - - Resources/Info.plist - - hash2 - - cbolIMR2jzM1jeru8QBpXnyfepv6PMzWJfroq2E2Coo= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Resources b/SDK/Libraries/Mac/XPWidgets.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/SDK/Libraries/Mac/XPWidgets.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Resources/Info.plist b/SDK/Libraries/Mac/XPWidgets.framework/Resources/Info.plist deleted file mode 100644 index 60487dd..0000000 --- a/SDK/Libraries/Mac/XPWidgets.framework/Resources/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - BuildMachineOSBuild - 22C65 - CFBundleDevelopmentRegion - English - CFBundleExecutable - XPWidgets - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - MacOSX - - CSResourcesFileMapped - - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 14C18 - DTPlatformName - macosx - DTPlatformVersion - 13.1 - DTSDKBuild - 22C55 - DTSDKName - macosx13.1 - DTXcode - 1420 - DTXcodeBuild - 14C18 - LSMinimumSystemVersion - 10.15 - - diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Versions/C/XPWidgets b/SDK/Libraries/Mac/XPWidgets.framework/Versions/C/XPWidgets index c996c4a..1422fef 100755 Binary files a/SDK/Libraries/Mac/XPWidgets.framework/Versions/C/XPWidgets and b/SDK/Libraries/Mac/XPWidgets.framework/Versions/C/XPWidgets differ diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current b/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current new file mode 120000 index 0000000..96d80cd --- /dev/null +++ b/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current @@ -0,0 +1 @@ +C \ No newline at end of file diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/Resources/Info.plist b/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/Resources/Info.plist deleted file mode 100644 index 60487dd..0000000 --- a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/Resources/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - BuildMachineOSBuild - 22C65 - CFBundleDevelopmentRegion - English - CFBundleExecutable - XPWidgets - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - MacOSX - - CSResourcesFileMapped - - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 14C18 - DTPlatformName - macosx - DTPlatformVersion - 13.1 - DTSDKBuild - 22C55 - DTSDKName - macosx13.1 - DTXcode - 1420 - DTXcodeBuild - 14C18 - LSMinimumSystemVersion - 10.15 - - diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/XPWidgets b/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/XPWidgets deleted file mode 100755 index c996c4a..0000000 Binary files a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/XPWidgets and /dev/null differ diff --git a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/_CodeSignature/CodeResources b/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/_CodeSignature/CodeResources deleted file mode 100644 index cf0809d..0000000 --- a/SDK/Libraries/Mac/XPWidgets.framework/Versions/Current/_CodeSignature/CodeResources +++ /dev/null @@ -1,128 +0,0 @@ - - - - - files - - Resources/Info.plist - - SngFRYyYZvFDvj7WlMImI0nWjNQ= - - - files2 - - Resources/Info.plist - - hash2 - - cyPpU9uTChX7rFyoW42moNimK/DK8zmtQ8Wih5q0fz4= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/SDK/Libraries/Win/XPLM.lib b/SDK/Libraries/Win/XPLM.lib deleted file mode 100755 index 2e78249..0000000 Binary files a/SDK/Libraries/Win/XPLM.lib and /dev/null differ diff --git a/SDK/Libraries/Win/XPLM_64.lib b/SDK/Libraries/Win/XPLM_64.lib index 090ed41..2c1dede 100644 Binary files a/SDK/Libraries/Win/XPLM_64.lib and b/SDK/Libraries/Win/XPLM_64.lib differ diff --git a/SDK/Libraries/Win/XPWidgets.lib b/SDK/Libraries/Win/XPWidgets.lib deleted file mode 100755 index 60e4fec..0000000 Binary files a/SDK/Libraries/Win/XPWidgets.lib and /dev/null differ diff --git a/SDK/README.txt b/SDK/README.txt index 122e3df..01a7fa5 100644 --- a/SDK/README.txt +++ b/SDK/README.txt @@ -32,6 +32,30 @@ SDK website explains this process in more detail. This section contains per-release notes for the history of the X-Plane SDK. +X-Plane SDK Release 4.2.0 10/31/2025 + +The 4.2.0 SDK includes new API functionality: + + - New weather APIs allow plugins to specify weather at multiple points for + custom weather that varies spatially. + + - The weather info structure is extended to support new data fields. + + - Extended texture ID enumerations to access the radar return texture for + avionics drawing callbacks. + + - Instances can be located using double precision coordinates, and can be + set to automatically move to match scenery coordinate shifts. + + - Extended cursor enumerations for display and avionic cursor callbacks. + +This version of the SDK requires X-Plane 12.3.0 or newer. This version of the +SDK is compiled against FMOD 2.0.2. + +X-Plane SDK Release 4.1.2 1/6/2025 + +Internal changes to support 'safe mode' in the simulator. + X-Plane SDK Release 4.1.1 10/10/2024 This is a bug fix to the SDK itself; the dylib link paths on the included