ray
Owner: IIIlllIIIllI URL: git@github.com:nyangkosense/ray.git
SDK/CHeaders/XPLM/XPLMWeather.h
#ifndef _XPLMWeather_h_
#define _XPLMWeather_h_
/*
* Copyright 2005-2022 Laminar Research, Sandy Barbour and Ben Supnik All
* rights reserved. See license.txt for usage. X-Plane SDK Version: 4.0.0
*
*/
/***************************************************************************
* XPLMWeather
***************************************************************************/
/*
* This provides access to the X-Plane 12 enhanced weather system.
*
*/
#include "XPLMDefs.h"
#ifdef __cplusplus
extern "C" {
#endif
/***************************************************************************
* WEATHER ACCESS
***************************************************************************/
/*
* XPLMWeatherInfoWinds_t
*
*/
typedef struct {
/* Altitude MSL, meters */
float alt_msl;
/* Wind speed, meters/sec */
float speed;
/* Direction (true) */
float direction;
/* Gust speed, meters/sec */
float gust_speed;
/* Shear arc, degrees i.e. 50% of this arc in either direction from base */
float shear;
/* Clear-air turbulence ratio */
float turbulence;
} XPLMWeatherInfoWinds_t;
/*
* XPLMWeatherInfoClouds_t
*
*/
typedef struct {
/* Cloud type, float enum */
float cloud_type;
/* Coverage ratio */
float coverage;
/* Altitude MSL, meters */
float alt_top;
/* Altitude MSL, meters */
float alt_base;
} XPLMWeatherInfoClouds_t;
/*
* XPLMWeatherInfo_t
*
* Basic weather conditions at a specific point.
*
*/
typedef struct {
/* The size of the struct. */
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 */
float pressure_alt;
/* Precipitation rate at the given altitude */
float precip_rate_alt;
/* Wind direction at the given altitude */
float wind_dir_alt;
/* Wind speed at the given altitude, meters/sec */
float wind_spd_alt;
/* Turbulence ratio at the given altitude */
float turbulence_alt;
/* Height of water waves in meters */
float wave_height;
/* Length of water waves in meters */
float wave_length;
/* Direction from which water waves are coming */
int wave_dir;
/* Speed of wave advance in meters/sec */
float wave_speed;
/* Base visibility at 0 altitude, meters */
float visibility;
/* Base precipitation ratio at 0 altitude */
float precip_rate;
/* Climb rate due to thermals, meters/sec */
float thermal_climb;
/* Pressure at 0 altitude in Pascals */
float pressure_sl;
/* Defined wind layers. Not all layers are always defined. */
XPLMWeatherInfoWinds_t wind_layers[13];
/* Defined cloud layers. Not all layers are always defined. */
XPLMWeatherInfoClouds_t cloud_layers[3];
} 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.
*
*/
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.
*
*/
XPLM_API int XPLMGetWeatherAtLocation(
double latitude,
double longitude,
double altitude_m,
XPLMWeatherInfo_t * out_info);
#endif /* XPLM400 */
#ifdef __cplusplus
}
#endif
#endif