SimConnect.h |
---|
//----------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All Rights Reserved. // //----------------------------------------------------------------------------- #ifndef _SIMCONNECT_H_ #define _SIMCONNECT_H_ #pragma once #ifndef DWORD_MAX #define DWORD_MAX 0xFFFFFFFF #endif #include <float.h> typedef DWORD SIMCONNECT_OBJECT_ID; //---------------------------------------------------------------------------- // Constants //---------------------------------------------------------------------------- static const DWORD SIMCONNECT_UNUSED = DWORD_MAX; // special value to indicate unused event, ID static const DWORD SIMCONNECT_OBJECT_ID_USER = 0; // proxy value for User vehicle ObjectID static const float SIMCONNECT_CAMERA_IGNORE_FIELD = FLT_MAX; //Used to tell the Camera API to NOT modify the value in this part of the argument. static const DWORD SIMCONNECT_CLIENTDATA_MAX_SIZE = 8192; // maximum value for SimConnect_CreateClientData dwSize parameter // Notification Group priority values static const DWORD SIMCONNECT_GROUP_PRIORITY_HIGHEST = 1; // highest priority static const DWORD SIMCONNECT_GROUP_PRIORITY_HIGHEST_MASKABLE = 10000000; // highest priority that allows events to be masked static const DWORD SIMCONNECT_GROUP_PRIORITY_STANDARD = 1900000000; // standard priority static const DWORD SIMCONNECT_GROUP_PRIORITY_DEFAULT = 2000000000; // default priority static const DWORD SIMCONNECT_GROUP_PRIORITY_LOWEST = 4000000000; // priorities lower than this will be ignored //Weather observations Metar strings static const DWORD MAX_METAR_LENGTH = 2000; // Maximum thermal size is 100 km. static const float MAX_THERMAL_SIZE = 100000; static const float MAX_THERMAL_RATE = 1000; // Camera system commands static const DWORD SIMCONNECT_CAMERA_MOVE_LEFT = 1; static const DWORD SIMCONNECT_CAMERA_MOVE_RIGHT = 2; static const DWORD SIMCONNECT_CAMERA_MOVE_UP = 3; static const DWORD SIMCONNECT_CAMERA_MOVE_DOWN = 4; static const DWORD SIMCONNECT_CAMERA_MOVE_FORWARD = 5; static const DWORD SIMCONNECT_CAMERA_MOVE_BACK = 6; static const DWORD SIMCONNECT_CAMERA_PITCH_UP = 7; static const DWORD SIMCONNECT_CAMERA_PITCH_DOWN = 8; static const DWORD SIMCONNECT_CAMERA_YAW_LEFT = 9; static const DWORD SIMCONNECT_CAMERA_YAW_RIGHT = 10; static const DWORD SIMCONNECT_CAMERA_ROLL_LEFT = 11; static const DWORD SIMCONNECT_CAMERA_ROLL_RIGHT = 12; static const DWORD SIMCONNECT_CAMERA_ZOOM_IN = 13; static const DWORD SIMCONNECT_CAMERA_ZOOM_OUT = 14; static const DWORD SIMCONNECT_CAMERA_RESET_ROTATION = 15; // Observer values static const DWORD SIMCONNECT_OBSERVER_REGIME_TELLURIAN = 0; // Earth-based observer, limited by terrain, allowed to go underwater. static const DWORD SIMCONNECT_OBSERVER_REGIME_TERRESTRIAL = 1; // Land-based observer, limited by terrain and water surfaces. static const DWORD SIMCONNECT_OBSERVER_REGIME_GHOST = 2; // Ghost observer, can pass through any object or terrain feature unimpeded. static const DWORD SIMCONNECT_OBSERVER_FOCUS_WORLD = 0; // Automatically shifts focal point to the world (terrain) as the observer is manipulated. static const DWORD SIMCONNECT_OBSERVER_FOCUS_FIXED = 1; // Locks the focus to a fixed distance relative to the observer's position. static const DWORD SIMCONNECT_OBSERVER_ROTATE_SELF = 0; // Observer will rotate about its own origin. static const DWORD SIMCONNECT_OBSERVER_ROTATE_TARGET = 1; // Observer will rotate about is focal point (target). static const DWORD SIMCONNECT_OBSERVER_AXIS_PITCH = 0; // The observer's pitch axis. static const DWORD SIMCONNECT_OBSERVER_AXIS_ROLL = 1; // The observer's roll (bank) axis. static const DWORD SIMCONNECT_OBSERVER_AXIS_YAW = 2; // The observer's yaw (heading) axis. // SIMCONNECT_DATA_INITPOSITION.Airspeed static const DWORD INITPOSITION_AIRSPEED_CRUISE = -1; // aircraft's cruise airspeed static const DWORD INITPOSITION_AIRSPEED_KEEP = -2; // keep current airspeed // AddToClientDataDefinition dwSizeOrType parameter type values static const DWORD SIMCONNECT_CLIENTDATATYPE_INT8 = -1; // 8-bit integer number static const DWORD SIMCONNECT_CLIENTDATATYPE_INT16 = -2; // 16-bit integer number static const DWORD SIMCONNECT_CLIENTDATATYPE_INT32 = -3; // 32-bit integer number static const DWORD SIMCONNECT_CLIENTDATATYPE_INT64 = -4; // 64-bit integer number static const DWORD SIMCONNECT_CLIENTDATATYPE_FLOAT32 = -5; // 32-bit floating-point number (float) static const DWORD SIMCONNECT_CLIENTDATATYPE_FLOAT64 = -6; // 64-bit floating-point number (double) // AddToClientDataDefinition dwOffset parameter special values static const DWORD SIMCONNECT_CLIENTDATAOFFSET_AUTO = -1; // automatically compute offset of the ClientData variable // Open ConfigIndex parameter special value static const DWORD SIMCONNECT_OPEN_CONFIGINDEX_LOCAL = -1; // ignore SimConnect.cfg settings, and force local connection //---------------------------------------------------------------------------- // Enum definitions //---------------------------------------------------------------------------- // Receive data types *ALWAYS ADD TO THE END OF THE ENUM* enum SIMCONNECT_RECV_ID { SIMCONNECT_RECV_ID_NULL, SIMCONNECT_RECV_ID_EXCEPTION, SIMCONNECT_RECV_ID_OPEN, SIMCONNECT_RECV_ID_QUIT, SIMCONNECT_RECV_ID_EVENT, SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE, SIMCONNECT_RECV_ID_EVENT_FILENAME, SIMCONNECT_RECV_ID_EVENT_FRAME, SIMCONNECT_RECV_ID_SIMOBJECT_DATA, SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE, SIMCONNECT_RECV_ID_WEATHER_OBSERVATION, SIMCONNECT_RECV_ID_CLOUD_STATE, SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID, SIMCONNECT_RECV_ID_RESERVED_KEY, SIMCONNECT_RECV_ID_CUSTOM_ACTION, SIMCONNECT_RECV_ID_SYSTEM_STATE, SIMCONNECT_RECV_ID_CLIENT_DATA, SIMCONNECT_RECV_ID_EVENT_WEATHER_MODE, SIMCONNECT_RECV_ID_AIRPORT_LIST, SIMCONNECT_RECV_ID_VOR_LIST, SIMCONNECT_RECV_ID_NDB_LIST, SIMCONNECT_RECV_ID_WAYPOINT_LIST, SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED, SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED, SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED, SIMCONNECT_RECV_ID_EVENT_RACE_END, SIMCONNECT_RECV_ID_EVENT_RACE_LAP, SIMCONNECT_RECV_ID_OBSERVER_DATA, SIMCONNECT_RECV_ID_GROUND_INFO, SIMCONNECT_RECV_ID_SYNCHRONOUS_BLOCK, SIMCONNECT_RECV_ID_EXTERNAL_SIM_CREATE, SIMCONNECT_RECV_ID_EXTERNAL_SIM_DESTROY, SIMCONNECT_RECV_ID_EXTERNAL_SIM_SIMULATE, SIMCONNECT_RECV_ID_EXTERNAL_SIM_LOCATION_CHANGED, SIMCONNECT_RECV_ID_EXTERNAL_SIM_EVENT, SIMCONNECT_RECV_ID_EVENT_WEAPON, SIMCONNECT_RECV_ID_EVENT_COUNTERMEASURE, SIMCONNECT_RECV_ID_EVENT_OBJECT_DAMAGED_BY_WEAPON, SIMCONNECT_RECV_ID_VERSION, SIMCONNECT_RECV_ID_SCENERY_COMPLEXITY, SIMCONNECT_RECV_ID_SHADOW_FLAGS, SIMCONNECT_RECV_ID_TACAN_LIST, SIMCONNECT_RECV_ID_CAMERA_6DOF, SIMCONNECT_RECV_ID_CAMERA_FOV, SIMCONNECT_RECV_ID_CAMERA_SENSOR_MODE, SIMCONNECT_RECV_ID_CAMERA_WINDOW_POSITION, SIMCONNECT_RECV_ID_CAMERA_WINDOW_SIZE, SIMCONNECT_RECV_ID_MISSION_OBJECT_COUNT, SIMCONNECT_RECV_ID_GOAL, SIMCONNECT_RECV_ID_MISSION_OBJECTIVE, SIMCONNECT_RECV_ID_FLIGHT_SEGMENT, SIMCONNECT_RECV_ID_PARAMETER_RANGE, SIMCONNECT_RECV_ID_FLIGHT_SEGMENT_READY_FOR_GRADING, }; // Data data types enum SIMCONNECT_DATATYPE { SIMCONNECT_DATATYPE_INVALID, // invalid data type SIMCONNECT_DATATYPE_INT32, // 32-bit integer number SIMCONNECT_DATATYPE_INT64, // 64-bit integer number SIMCONNECT_DATATYPE_FLOAT32, // 32-bit floating-point number (float) SIMCONNECT_DATATYPE_FLOAT64, // 64-bit floating-point number (double) SIMCONNECT_DATATYPE_STRING8, // 8-byte string SIMCONNECT_DATATYPE_STRING32, // 32-byte string SIMCONNECT_DATATYPE_STRING64, // 64-byte string SIMCONNECT_DATATYPE_STRING128, // 128-byte string SIMCONNECT_DATATYPE_STRING256, // 256-byte string SIMCONNECT_DATATYPE_STRING260, // 260-byte string SIMCONNECT_DATATYPE_STRINGV, // variable-length string SIMCONNECT_DATATYPE_INITPOSITION, // see SIMCONNECT_DATA_INITPOSITION SIMCONNECT_DATATYPE_MARKERSTATE, // see SIMCONNECT_DATA_MARKERSTATE SIMCONNECT_DATATYPE_WAYPOINT, // see SIMCONNECT_DATA_WAYPOINT SIMCONNECT_DATATYPE_LATLONALT, // see SIMCONNECT_DATA_LATLONALT SIMCONNECT_DATATYPE_XYZ, // see SIMCONNECT_DATA_XYZ SIMCONNECT_DATATYPE_PBH, // see SIMCONNECT_DATA_PBH SIMCONNECT_DATATYPE_OBSERVER, // see SIMCONNECT_DATA_OBSERVER SIMCONNECT_DATATYPE_OBJECT_DAMAGED_BY_WEAPON, // see SIMCONNECT_DATA_OBJECT_DAMAGED_BY_WEAPON SIMCONNECT_DATATYPE_MAX // enum limit }; // Exception error types enum SIMCONNECT_EXCEPTION { SIMCONNECT_EXCEPTION_NONE, SIMCONNECT_EXCEPTION_ERROR, SIMCONNECT_EXCEPTION_SIZE_MISMATCH, SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID, SIMCONNECT_EXCEPTION_UNOPENED, SIMCONNECT_EXCEPTION_VERSION_MISMATCH, SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS, SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED, SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES, SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE, SIMCONNECT_EXCEPTION_TOO_MANY_MAPS, SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS, SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS, SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT, SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR, SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION, SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION, SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION, SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE, SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE, SIMCONNECT_EXCEPTION_DATA_ERROR, SIMCONNECT_EXCEPTION_INVALID_ARRAY, SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED, SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED, SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OBJECT_TYPE, SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION, SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED, SIMCONNECT_EXCEPTION_INVALID_ENUM, SIMCONNECT_EXCEPTION_DEFINITION_ERROR, SIMCONNECT_EXCEPTION_DUPLICATE_ID, SIMCONNECT_EXCEPTION_DATUM_ID, SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS, SIMCONNECT_EXCEPTION_ALREADY_CREATED, SIMCONNECT_EXCEPTION_OBJECT_OUTSIDE_REALITY_BUBBLE, SIMCONNECT_EXCEPTION_OBJECT_CONTAINER, SIMCONNECT_EXCEPTION_OBJECT_AI, SIMCONNECT_EXCEPTION_OBJECT_ATC, SIMCONNECT_EXCEPTION_OBJECT_SCHEDULE, SIMCONNECT_EXCEPTION_BLOCK_TIMEOUT, }; // Object types enum SIMCONNECT_SIMOBJECT_TYPE { SIMCONNECT_SIMOBJECT_TYPE_USER, SIMCONNECT_SIMOBJECT_TYPE_ALL, SIMCONNECT_SIMOBJECT_TYPE_AIRPLANE, SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT = SIMCONNECT_SIMOBJECT_TYPE_AIRPLANE, SIMCONNECT_SIMOBJECT_TYPE_HELICOPTER, SIMCONNECT_SIMOBJECT_TYPE_BOAT, SIMCONNECT_SIMOBJECT_TYPE_GROUND, SIMCONNECT_SIMOBJECT_TYPE_WEAPON, }; // EventState values enum SIMCONNECT_STATE { SIMCONNECT_STATE_OFF, SIMCONNECT_STATE_ON, }; // Object Data Request Period values enum SIMCONNECT_PERIOD { SIMCONNECT_PERIOD_NEVER, SIMCONNECT_PERIOD_ONCE, SIMCONNECT_PERIOD_VISUAL_FRAME, SIMCONNECT_PERIOD_SIM_FRAME, SIMCONNECT_PERIOD_SECOND, }; // ClientData Request Period values enum SIMCONNECT_CLIENT_DATA_PERIOD { SIMCONNECT_CLIENT_DATA_PERIOD_NEVER, SIMCONNECT_CLIENT_DATA_PERIOD_ONCE, SIMCONNECT_CLIENT_DATA_PERIOD_VISUAL_FRAME, SIMCONNECT_CLIENT_DATA_PERIOD_ON_SET, SIMCONNECT_CLIENT_DATA_PERIOD_SECOND, }; enum SIMCONNECT_MISSION_END { SIMCONNECT_MISSION_FAILED, SIMCONNECT_MISSION_CRASHED, SIMCONNECT_MISSION_SUCCEEDED }; enum SIMCONNECT_TEXT_TYPE { SIMCONNECT_TEXT_TYPE_SCROLL_BLACK, SIMCONNECT_TEXT_TYPE_SCROLL_WHITE, SIMCONNECT_TEXT_TYPE_SCROLL_RED, SIMCONNECT_TEXT_TYPE_SCROLL_GREEN, SIMCONNECT_TEXT_TYPE_SCROLL_BLUE, SIMCONNECT_TEXT_TYPE_SCROLL_YELLOW, SIMCONNECT_TEXT_TYPE_SCROLL_MAGENTA, SIMCONNECT_TEXT_TYPE_SCROLL_CYAN, SIMCONNECT_TEXT_TYPE_PRINT_BLACK=0x0100, SIMCONNECT_TEXT_TYPE_PRINT_WHITE, SIMCONNECT_TEXT_TYPE_PRINT_RED, SIMCONNECT_TEXT_TYPE_PRINT_GREEN, SIMCONNECT_TEXT_TYPE_PRINT_BLUE, SIMCONNECT_TEXT_TYPE_PRINT_YELLOW, SIMCONNECT_TEXT_TYPE_PRINT_MAGENTA, SIMCONNECT_TEXT_TYPE_PRINT_CYAN, SIMCONNECT_TEXT_TYPE_MENU=0x0200, }; enum SIMCONNECT_TEXT_RESULT { SIMCONNECT_TEXT_RESULT_MENU_SELECT_1, SIMCONNECT_TEXT_RESULT_MENU_SELECT_2, SIMCONNECT_TEXT_RESULT_MENU_SELECT_3, SIMCONNECT_TEXT_RESULT_MENU_SELECT_4, SIMCONNECT_TEXT_RESULT_MENU_SELECT_5, SIMCONNECT_TEXT_RESULT_MENU_SELECT_6, SIMCONNECT_TEXT_RESULT_MENU_SELECT_7, SIMCONNECT_TEXT_RESULT_MENU_SELECT_8, SIMCONNECT_TEXT_RESULT_MENU_SELECT_9, SIMCONNECT_TEXT_RESULT_MENU_SELECT_10, SIMCONNECT_TEXT_RESULT_DISPLAYED = 0x00010000, SIMCONNECT_TEXT_RESULT_QUEUED, SIMCONNECT_TEXT_RESULT_REMOVED, SIMCONNECT_TEXT_RESULT_REPLACED, SIMCONNECT_TEXT_RESULT_TIMEOUT, }; enum SIMCONNECT_WEATHER_MODE { SIMCONNECT_WEATHER_MODE_THEME, SIMCONNECT_WEATHER_MODE_RWW, // deprecated SIMCONNECT_WEATHER_MODE_CUSTOM, SIMCONNECT_WEATHER_MODE_GLOBAL, }; enum SIMCONNECT_FACILITY_LIST_TYPE { SIMCONNECT_FACILITY_LIST_TYPE_AIRPORT, SIMCONNECT_FACILITY_LIST_TYPE_WAYPOINT, SIMCONNECT_FACILITY_LIST_TYPE_NDB, SIMCONNECT_FACILITY_LIST_TYPE_VOR, SIMCONNECT_FACILITY_LIST_TYPE_TACAN, SIMCONNECT_FACILITY_LIST_TYPE_COUNT // invalid }; // Camera types enum SIMCONNECT_CAMERA_TYPE { SIMCONNECT_CAMERA_TYPE_OBJECT_PANEL, SIMCONNECT_CAMERA_TYPE_OBJECT_VIRTUAL, SIMCONNECT_CAMERA_TYPE_OBJECT_CENTER, SIMCONNECT_CAMERA_TYPE_OBJECT_PILOT, SIMCONNECT_CAMERA_TYPE_TOWER, SIMCONNECT_CAMERA_TYPE_FIXED, SIMCONNECT_CAMERA_TYPE_WORLD_OBJECT, SIMCONNECT_CAMERA_TYPE_LATLONALT_ORTHOGONAL, SIMCONNECT_CAMERA_TYPE_OBJECT_AI_VIRTUAL, }; typedef DWORD SIMCONNECT_EVENT_SUBSCRIPTION_FLAG; static const DWORD SIMCONNECT_EVENT_SUBSCRIPTION_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_EVENT_SUBSCRIPTION_FLAG_BLOCK = 0x00000001; typedef DWORD SIMCONNECT_VOR_FLAGS; // flags for SIMCONNECT_RECV_ID_VOR_LIST static const DWORD SIMCONNECT_RECV_ID_VOR_LIST_HAS_NAV_SIGNAL = 0x00000001; // Has Nav signal static const DWORD SIMCONNECT_RECV_ID_VOR_LIST_HAS_LOCALIZER = 0x00000002; // Has localizer static const DWORD SIMCONNECT_RECV_ID_VOR_LIST_HAS_GLIDE_SLOPE = 0x00000004; // Has Nav signal static const DWORD SIMCONNECT_RECV_ID_VOR_LIST_HAS_DME = 0x00000008; // Station has DME // bits for the Waypoint Flags field: may be combined typedef DWORD SIMCONNECT_WAYPOINT_FLAGS; static const DWORD SIMCONNECT_WAYPOINT_NONE = 0x00; static const DWORD SIMCONNECT_WAYPOINT_SPEED_REQUESTED = 0x04; // requested speed at waypoint is valid static const DWORD SIMCONNECT_WAYPOINT_THROTTLE_REQUESTED = 0x08; // request a specific throttle percentage static const DWORD SIMCONNECT_WAYPOINT_COMPUTE_VERTICAL_SPEED = 0x10; // compute vertical to speed to reach waypoint altitude when crossing the waypoint static const DWORD SIMCONNECT_WAYPOINT_ALTITUDE_IS_AGL = 0x20; // AltitudeIsAGL static const DWORD SIMCONNECT_WAYPOINT_ON_GROUND = 0x00100000; // place this waypoint on the ground static const DWORD SIMCONNECT_WAYPOINT_REVERSE = 0x00200000; // Back up to this waypoint. Only valid on first waypoint static const DWORD SIMCONNECT_WAYPOINT_WRAP_TO_FIRST = 0x00400000; // Wrap around back to first waypoint. Only valid on last waypoint. typedef DWORD SIMCONNECT_EVENT_FLAG; static const DWORD SIMCONNECT_EVENT_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_EVENT_FLAG_FAST_REPEAT_TIMER = 0x00000001; // set event repeat timer to simulate fast repeat static const DWORD SIMCONNECT_EVENT_FLAG_SLOW_REPEAT_TIMER = 0x00000002; // set event repeat timer to simulate slow repeat static const DWORD SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY = 0x00000010; // interpret GroupID parameter as priority value typedef DWORD SIMCONNECT_DATA_REQUEST_FLAG; static const DWORD SIMCONNECT_DATA_REQUEST_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_DATA_REQUEST_FLAG_CHANGED = 0x00000001; // send requested data when value(s) change static const DWORD SIMCONNECT_DATA_REQUEST_FLAG_TAGGED = 0x00000002; // send requested data in tagged format static const DWORD SIMCONNECT_DATA_REQUEST_FLAG_BLOCK = 0x00000004; // Block server when data is sent typedef DWORD SIMCONNECT_DATA_SET_FLAG; static const DWORD SIMCONNECT_DATA_SET_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_DATA_SET_FLAG_TAGGED = 0x00000001; // data is in tagged format static const DWORD SIMCONNECT_DATA_SET_FLAG_UNBLOCK = 0x00000002; // Unblock server after data is set typedef DWORD SIMCONNECT_CREATE_CLIENT_DATA_FLAG; static const DWORD SIMCONNECT_CREATE_CLIENT_DATA_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_CREATE_CLIENT_DATA_FLAG_READ_ONLY = 0x00000001; // permit only ClientData creator to write into ClientData typedef DWORD SIMCONNECT_CLIENT_DATA_REQUEST_FLAG; static const DWORD SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_CHANGED = 0x00000001; // send requested ClientData when value(s) change static const DWORD SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_TAGGED = 0x00000002; // send requested ClientData in tagged format static const DWORD SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_BLOCK = 0x00000004; // Block server when data is sent typedef DWORD SIMCONNECT_CLIENT_DATA_SET_FLAG; static const DWORD SIMCONNECT_CLIENT_DATA_SET_FLAG_DEFAULT = 0x00000000; static const DWORD SIMCONNECT_CLIENT_DATA_SET_FLAG_TAGGED = 0x00000001; // data is in tagged format static const DWORD SIMCONNECT_CLIENT_DATA_SET_FLAG_UNBLOCK = 0x00000002; typedef DWORD SIMCONNECT_VIEW_SYSTEM_EVENT_DATA; // dwData contains these flags for the "View" System Event static const DWORD SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_COCKPIT_2D = 0x00000001; // 2D Panels in cockpit view static const DWORD SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_COCKPIT_VIRTUAL = 0x00000002; // Virtual (3D) panels in cockpit view static const DWORD SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_ORTHOGONAL = 0x00000004; // Orthogonal (Map) view typedef DWORD SIMCONNECT_SOUND_SYSTEM_EVENT_DATA; // dwData contains these flags for the "Sound" System Event static const DWORD SIMCONNECT_SOUND_SYSTEM_EVENT_DATA_MASTER = 0x00000001; // Sound Master typedef DWORD SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG; // specifies which synchronous callbacks the external sim wants sent to it static const DWORD SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG_CREATE = 0x00000001; static const DWORD SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG_DESTROY = 0x00000002; static const DWORD SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG_SIMULATE = 0x00000004; static const DWORD SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG_LOCATION_CHANGED = 0x00000008; static const DWORD SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG_EVENT = 0x00000010; // // Flags used in SimConnect_RequestGroundInfo API call // // specify format for the LatLon components enum SIMCONNECT_GROUND_INFO_LATLON_FORMAT { SIMCONNECT_GROUND_INFO_LATLON_FORMAT_RADIANS, SIMCONNECT_GROUND_INFO_LATLON_FORMAT_DEGREES, SIMCONNECT_GROUND_INFO_LATLON_FORMAT_METERS, }; // specify format for the Alt components enum SIMCONNECT_GROUND_INFO_ALT_FORMAT { SIMCONNECT_GROUND_INFO_ALT_FORMAT_METERS, SIMCONNECT_GROUND_INFO_ALT_FORMAT_FEET, }; // specify data sources to search through typedef DWORD SIMCONNECT_GROUND_INFO_SOURCE_FLAG; static const DWORD SIMCONNECT_GROUND_INFO_SOURCE_FLAG_TERRAIN = 0x00010000; static const DWORD SIMCONNECT_GROUND_INFO_SOURCE_FLAG_PLATFORMS = 0x00020000; static const DWORD SIMCONNECT_GROUND_INFO_SOURCE_FLAG_BATHYMETRY = 0x00040000; enum SIMCONNECT_CAMERA_SENSOR_MODE { SIMCONNECT_CAMERA_SENSOR_NONE, SIMCONNECT_CAMERA_SENSOR_IR, //CAMERA_SENSOR_IR_WHITE_HOT SIMCONNECT_CAMERA_SENSOR_IR_BLACK_HOT, //CAMERA_SENSOR_IR_BLACK_HOT SIMCONNECT_CAMERA_SENSOR_GDATA //CAMERA_SENSOR_GDATA }; enum SIMCONNECT_LICENSE_TYPE { SIMCONNECT_LICENSE_ACADEMIC, SIMCONNECT_LICENSE_PROFESSIONAL, SIMCONNECT_LICENSE_PROFESSIONAL_PLUS, SIMCONNECT_LICENSE_UNKNOWN // should always be last }; enum SIMCONNECT_SCENERY_COMPLEXITY { SIMCONNECT_SCENERY_COMPLEXITY_VERY_SPARSE, SIMCONNECT_SCENERY_COMPLEXITY_SPARSE, SIMCONNECT_SCENERY_COMPLEXITY_NORMAL, SIMCONNECT_SCENERY_COMPLEXITY_DENSE, SIMCONNECT_SCENERY_COMPLEXITY_VERY_DENSE, SIMCONNECT_SCENERY_COMPLEXITY_EXTREMELY_DENSE, }; typedef DWORD SIMCONNECT_SHADOW_FLAGS; static const DWORD SIMCONNECT_SHADOW_FLAGS_INTERIOR_CAST = 0x00000001; static const DWORD SIMCONNECT_SHADOW_FLAGS_INTERIOR_RECEIVE = 0x00000002; static const DWORD SIMCONNECT_SHADOW_FLAGS_EXTERIOR_CAST = 0x00000004; static const DWORD SIMCONNECT_SHADOW_FLAGS_EXTERIOR_RECEIVE = 0x00000008; static const DWORD SIMCONNECT_SHADOW_FLAGS_SIMOBJECTS_CAST = 0x00000010; static const DWORD SIMCONNECT_SHADOW_FLAGS_SIMOBJECTS_RECEIVE = 0x00000020; static const DWORD SIMCONNECT_SHADOW_FLAGS_TERRAIN_CAST = 0x00000040; static const DWORD SIMCONNECT_SHADOW_FLAGS_TERRAIN_RECEIVE = 0x00000080; static const DWORD SIMCONNECT_SHADOW_FLAGS_VEGETATION_CAST = 0x00000100; static const DWORD SIMCONNECT_SHADOW_FLAGS_VEGETATION_RECEIVE = 0x00000200; static const DWORD SIMCONNECT_SHADOW_FLAGS_BUILDINGS_CAST = 0x00000400; static const DWORD SIMCONNECT_SHADOW_FLAGS_BUILDINGS_RECEIVE = 0x00000800; static const DWORD SIMCONNECT_SHADOW_FLAGS_CLOUDS_CAST = 0x00001000; enum SIMCONNECT_GOAL_STATE { SIMCONNECT_GOAL_STATE_GOAL_PENDING, SIMCONNECT_GOAL_STATE_GOAL_COMPLETED, SIMCONNECT_GOAL_STATE_GOAL_FAILED, }; enum SIMCONNECT_GOAL_RESOLUTION { SIMCONNECT_GOAL_RESOLUTION_COMPLETED, SIMCONNECT_GOAL_RESOLUTION_FAILED, }; enum SIMCONNECT_MISSION_OBJECTIVE_STATUS { SIMCONNECT_MISSION_OBJECTIVE_STATUS_PENDING, SIMCONNECT_MISSION_OBJECTIVE_STATUS_PASSED, SIMCONNECT_MISSION_OBJECTIVE_STATUS_FAILED, }; enum SIMCONNECT_MISSION_OBJECT_TYPE { SIMCONNECT_MISSION_OBJECT_TYPE_GOAL, SIMCONNECT_MISSION_OBJECT_TYPE_MISSION_OBJECTIVE, SIMCONNECT_MISSION_OBJECT_TYPE_FLIGHT_SEGMENT, }; //---------------------------------------------------------------------------- // User-defined enums //---------------------------------------------------------------------------- typedef DWORD SIMCONNECT_NOTIFICATION_GROUP_ID; //client-defined notification group ID typedef DWORD SIMCONNECT_INPUT_GROUP_ID; //client-defined input group ID typedef DWORD SIMCONNECT_DATA_DEFINITION_ID; //client-defined data definition ID typedef DWORD SIMCONNECT_DATA_REQUEST_ID; //client-defined request data ID typedef DWORD SIMCONNECT_CLIENT_EVENT_ID; //client-defined client event ID typedef DWORD SIMCONNECT_CLIENT_DATA_ID; //client-defined client data ID typedef DWORD SIMCONNECT_CLIENT_DATA_DEFINITION_ID; //client-defined client data definition ID typedef DWORD SIMCONNECT_CAMERA_COMMAND; //camera and observer commands (mimic user input) //---------------------------------------------------------------------------- // Struct definitions //---------------------------------------------------------------------------- #pragma pack(push, 1) struct SIMCONNECT_RECV { DWORD dwSize; // record size DWORD dwVersion; // interface version DWORD dwID; // see SIMCONNECT_RECV_ID }; struct SIMCONNECT_RECV_EXCEPTION : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_EXCEPTION { DWORD dwException; // see SIMCONNECT_EXCEPTION static const DWORD UNKNOWN_SENDID = 0; DWORD dwSendID; // see SimConnect_GetLastSentPacketID static const DWORD UNKNOWN_INDEX = DWORD_MAX; DWORD dwIndex; // index of parameter that was source of error }; struct SIMCONNECT_RECV_OPEN : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_OPEN { char szApplicationName[256]; DWORD dwApplicationVersionMajor; DWORD dwApplicationVersionMinor; DWORD dwApplicationBuildMajor; DWORD dwApplicationBuildMinor; DWORD dwSimConnectVersionMajor; DWORD dwSimConnectVersionMinor; DWORD dwSimConnectBuildMajor; DWORD dwSimConnectBuildMinor; DWORD dwReserved1; DWORD dwReserved2; }; struct SIMCONNECT_RECV_QUIT : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_QUIT { }; struct SIMCONNECT_RECV_EVENT_BASE : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_EVENT { static const DWORD UNKNOWN_GROUP = DWORD_MAX; DWORD uGroupID; DWORD uEventID; DWORD dwData; // uEventID-dependent context }; struct SIMCONNECT_RECV_EVENT : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT { DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_FILENAME : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_FILENAME { char szFileName[MAX_PATH]; // uEventID-dependent context DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_FILENAME { SIMCONNECT_SIMOBJECT_TYPE eObjType; DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_FRAME : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_FRAME { float fFrameRate; float fSimSpeed; DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED : public SIMCONNECT_RECV_EVENT // when dwID == SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED { // No event specific data, for now }; struct SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED : public SIMCONNECT_RECV_EVENT // when dwID == SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED { // No event specific data, for now }; struct SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED : public SIMCONNECT_RECV_EVENT // when dwID == SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED { // No event specific data, for now }; // SIMCONNECT_DATA_LATLONALT struct SIMCONNECT_DATA_LATLONALT { double Latitude; double Longitude; double Altitude; }; // SIMCONNECT_DATA_RACE_RESULT struct SIMCONNECT_DATA_RACE_RESULT { DWORD dwNumberOfRacers; // The total number of racers GUID MissionGUID; // The name of the mission to execute, NULL if no mission char szPlayerName[MAX_PATH]; // The name of the player char szSessionType[MAX_PATH]; // The type of the multiplayer session: "LAN", "GAMESPY") char szAircraft[MAX_PATH]; // The aircraft type char szPlayerRole[MAX_PATH]; // The player role in the mission double fTotalTime; // Total time in seconds, 0 means DNF double fPenaltyTime; // Total penalty time in seconds DWORD dwIsDisqualified; // non 0 - disqualified, 0 - not disqualified }; struct SIMCONNECT_RECV_EVENT_RACE_END : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_RACE_END { DWORD dwRacerNumber; // The index of the racer the results are for SIMCONNECT_DATA_RACE_RESULT RacerData; DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_RACE_LAP : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_RACE_LAP { DWORD dwLapIndex; // The index of the lap the results are for SIMCONNECT_DATA_RACE_RESULT RacerData; DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_WEAPON : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_WEAPON_FIRED or SIMCONNECT_RECV_ID_EVENT_WEAPON_DETONATED { DWORD dwRequestID; char szWeaponTitle[MAX_PATH]; char szWeaponType[MAX_PATH]; DWORD dwObjectID; DWORD dwAttackerID; DWORD dwTargetID; SIMCONNECT_DATA_LATLONALT llaPosition; DWORD dwResult; DWORD dwFlags; }; // SIMCONNECT_DATA_OBJECT_DAMAGED_BY_WEAPON struct SIMCONNECT_DATA_OBJECT_DAMAGED_BY_WEAPON { DWORD dwWeaponID; //Weapon ID DWORD dwAttackerID; //Attacker ID DWORD dwDamagedObjectID; //Target ID }; struct SIMCONNECT_RECV_EVENT_OBJECT_DAMAGED_BY_WEAPON : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_OBJECT_DAMAGED_BY_WEAPON { DWORD dwRequestID; SIMCONNECT_DATA_OBJECT_DAMAGED_BY_WEAPON DamageData; DWORD dwFlags; }; struct SIMCONNECT_RECV_EVENT_COUNTERMEASURE : public SIMCONNECT_RECV_EVENT_BASE // when dwID == SIMCONNECT_RECV_ID_EVENT_COUNTERMEASURE_FIRED { DWORD dwRequestID; char szCountermeasureName[MAX_PATH]; DWORD dwObjectID; DWORD dwAttackerID; SIMCONNECT_DATA_LATLONALT llaPosition; DWORD dwFlags; }; struct SIMCONNECT_RECV_SIMOBJECT_DATA : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_SIMOBJECT_DATA { DWORD dwRequestID; DWORD dwObjectID; DWORD dwDefineID; DWORD dwFlags; // SIMCONNECT_DATA_REQUEST_FLAG DWORD dwentrynumber; // if multiple objects returned, this is number <entrynumber> out of <outof>. DWORD dwoutof; // note: starts with 1, not 0. DWORD dwDefineCount; // data count (number of datums, *not* byte count) DWORD dwData; // data begins here, dwDefineCount data items }; struct SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE : public SIMCONNECT_RECV_SIMOBJECT_DATA // when dwID == SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE { }; struct SIMCONNECT_RECV_CLIENT_DATA : public SIMCONNECT_RECV_SIMOBJECT_DATA // when dwID == SIMCONNECT_RECV_ID_CLIENT_DATA { }; struct SIMCONNECT_RECV_SYNCHRONOUS_BLOCK : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_SYNCHRONOUS_BLOCK { DWORD dwRequestID; DWORD dwFlags; // SIMCONNECT_DATA_REQUEST_FLAG }; struct SIMCONNECT_RECV_CAMERA_6DOF : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_CAMERA_6DOF { DWORD dwRequestID; float fDeltaXMeters; float fDeltaYMeters; float fDeltaZMeters; float fPitchDeg; float fBankDeg; float fHeadingDeg; }; struct SIMCONNECT_RECV_CAMERA_FOV : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_CAMERA_FOV { DWORD dwRequestID; float fHorizontalFov; float fVerticalFov; }; struct SIMCONNECT_RECV_CAMERA_SENSOR_MODE : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_CAMERA_SENSOR_MODE { DWORD dwRequestID; SIMCONNECT_CAMERA_SENSOR_MODE eSensorMode; }; struct SIMCONNECT_RECV_CAMERA_WINDOW_POSITION : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_CAMERA_WINDOW_POSITION { DWORD dwRequestID; DWORD dwXPosition; DWORD dwYPosition; }; struct SIMCONNECT_RECV_CAMERA_WINDOW_SIZE : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_CAMERA_WINDOW_SIZE { DWORD dwRequestID; DWORD dwWidth; DWORD dwHeight; }; struct SIMCONNECT_RECV_WEATHER_OBSERVATION : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_WEATHER_OBSERVATION { DWORD dwRequestID; char szMetar[1]; // Variable length string whose maximum size is MAX_METAR_LENGTH }; static const int SIMCONNECT_CLOUD_STATE_ARRAY_WIDTH = 64; static const int SIMCONNECT_CLOUD_STATE_ARRAY_SIZE = SIMCONNECT_CLOUD_STATE_ARRAY_WIDTH*SIMCONNECT_CLOUD_STATE_ARRAY_WIDTH; struct SIMCONNECT_RECV_CLOUD_STATE : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_CLOUD_STATE { DWORD dwRequestID; DWORD dwArraySize; BYTE rgbData[1]; }; struct SIMCONNECT_RECV_ASSIGNED_OBJECT_ID : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID { DWORD dwRequestID; DWORD dwObjectID; }; struct SIMCONNECT_RECV_RESERVED_KEY : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_RESERVED_KEY { char szChoiceReserved[30]; char szReservedKey[50]; }; struct SIMCONNECT_RECV_SYSTEM_STATE : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_SYSTEM_STATE { DWORD dwRequestID; DWORD dwInteger; float fFloat; char szString[MAX_PATH]; }; struct SIMCONNECT_RECV_VERSION : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_VERSION { DWORD dwRequestID; DWORD dwApplicationVersionType; DWORD dwApplicationVersionMajor; DWORD dwApplicationVersionMinor; DWORD dwApplicationBuildMajor; DWORD dwApplicationBuildMinor; DWORD dwSimConnectVersionMajor; DWORD dwSimConnectVersionMinor; DWORD dwSimConnectBuildMajor; DWORD dwSimConnectBuildMinor; }; struct SIMCONNECT_RECV_SCENERY_COMPLEXITY : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_SCENERY_COMPLEXITY { DWORD dwRequestID; DWORD dwSceneryComplexity; }; struct SIMCONNECT_RECV_SHADOW_FLAGS : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_SHADOW_FLAGS { DWORD dwRequestID; DWORD dwShadowFlags; }; struct SIMCONNECT_RECV_CUSTOM_ACTION : public SIMCONNECT_RECV_EVENT_BASE { GUID guidInstanceId; // Instance id of the action that executed DWORD dwWaitForCompletion; // Wait for completion flag on the action char szPayLoad[1]; // Variable length string payload associated with the mission action. }; struct SIMCONNECT_RECV_GOAL : public SIMCONNECT_RECV //when dwID == SIMCONNECT_RECV_ID_GOAL { DWORD dwRequestID; GUID guidInstanceID; // Instance id of the goal BOOL isOptional; // Whether goal is optional for mission completion DWORD dwOrder; // Priority order of goal DWORD dwPointValue; // Point value of goal SIMCONNECT_GOAL_STATE eGoalState; // Goal state char szGoalText[MAX_PATH]; // Goal text }; struct SIMCONNECT_RECV_MISSION_OBJECTIVE : public SIMCONNECT_RECV //when dwID == SIMCONNECT_RECV_ID_MISSION_OBJECTIVE { DWORD dwRequestID; GUID guidInstanceID; // Instance id of the mission objective BOOL isOptional; // Whether mission objective is optional for mission completion BOOL isObjectivePassed; // Whether Mission Objective has been passed SIMCONNECT_MISSION_OBJECTIVE_STATUS eMissionObjectiveStatus; // Mission objective status DWORD dwPassValue; // Value needed to pass mission objective DWORD dwCurrentScore; // Current score of mission objective DWORD dwTotalPossiblePoints; // Maximum total score possible for mission objective DWORD dwPointValue; // Points mission objective is worth when passed DWORD dwOrder; // Priority order of mission objective char szMissionObjectiveText[MAX_PATH]; // Mission Objective text }; struct SIMCONNECT_RECV_MISSION_OBJECT_COUNT : public SIMCONNECT_RECV //when dwID == SIMCONNECT_RECV_ID_MISSION_OBJECT_COUNT { DWORD dwRequestID; SIMCONNECT_MISSION_OBJECT_TYPE eMissionObjectType; // Type of mission object the count is for TODO REMOVE: Whether count is goal count (otherwise is mission objective count) DWORD dwCount; // Number of mission objects of specified type in mission }; struct SIMCONNECT_RECV_FLIGHT_SEGMENT : public SIMCONNECT_RECV //when dwID == SIMCONNECT_RECV_ID_FLIGHT_SEGMENT { DWORD dwRequestID; GUID guidInstanceID; // Instance id of the flight segment GUID guidSegmentGoalID; // Instance id of the flight segment's goal DWORD dwParameterCount; // Number of parameters that are being graded in this flight segment DWORD dwTotalRangeCount; // Total number of ranges combined for all parameters that are graded with this flight segment }; struct SIMCONNECT_RECV_PARAMETER_RANGE : public SIMCONNECT_RECV //when dwID == SIMCONNECT_RECV_ID_PARAMETER_RANGE { DWORD dwRequestID; DWORD dwExceededCount; // Number of times this range was exceeded in either direction, checking every second DWORD dwMaxOverMeasured; // The upper bound of this range, in terms of value above the measured value DWORD dwMinUnderMeasured; // The lower bound of this range, in terms of value under the measured value char szRangeName[MAX_PATH]; // Range Name char szParameterName[MAX_PATH]; // Parameter Name }; struct SIMCONNECT_RECV_FLIGHT_SEGMENT_READY_FOR_GRADING : public SIMCONNECT_RECV_EVENT_BASE { GUID guidInstanceID; // Instance id of the flight segment that is ready for grading }; struct SIMCONNECT_RECV_EVENT_WEATHER_MODE : public SIMCONNECT_RECV_EVENT { // No event specific data - the new weather mode is in the base structure dwData member. }; // SIMCONNECT_RECV_FACILITIES_LIST struct SIMCONNECT_RECV_FACILITIES_LIST : public SIMCONNECT_RECV { DWORD dwRequestID; DWORD dwArraySize; DWORD dwEntryNumber; // when the array of items is too big for one send, which send this is (0..dwOutOf-1) DWORD dwOutOf; // total number of transmissions the list is chopped into }; // SIMCONNECT_DATA_FACILITY_AIRPORT struct SIMCONNECT_DATA_FACILITY_AIRPORT { char Icao[9]; // ICAO of the object double Latitude; // degrees double Longitude; // degrees double Altitude; // meters }; // SIMCONNECT_RECV_AIRPORT_LIST struct SIMCONNECT_RECV_AIRPORT_LIST : public SIMCONNECT_RECV_FACILITIES_LIST { SIMCONNECT_DATA_FACILITY_AIRPORT rgData[1]; }; // SIMCONNECT_DATA_FACILITY_WAYPOINT struct SIMCONNECT_DATA_FACILITY_WAYPOINT : public SIMCONNECT_DATA_FACILITY_AIRPORT { float fMagVar; // Magvar in degrees }; // SIMCONNECT_RECV_WAYPOINT_LIST struct SIMCONNECT_RECV_WAYPOINT_LIST : public SIMCONNECT_RECV_FACILITIES_LIST { SIMCONNECT_DATA_FACILITY_WAYPOINT rgData[1]; }; // SIMCONNECT_DATA_FACILITY_NDB struct SIMCONNECT_DATA_FACILITY_NDB : public SIMCONNECT_DATA_FACILITY_WAYPOINT { DWORD fFrequency; // frequency in Hz }; // SIMCONNECT_RECV_NDB_LIST struct SIMCONNECT_RECV_NDB_LIST : public SIMCONNECT_RECV_FACILITIES_LIST { SIMCONNECT_DATA_FACILITY_NDB rgData[1]; }; // SIMCONNECT_DATA_FACILITY_TACAN struct SIMCONNECT_DATA_FACILITY_TACAN : public SIMCONNECT_DATA_FACILITY_WAYPOINT { DWORD uChannel; // frequency in Hz BOOL bXYBandIsY; //X or Y band }; // SIMCONNECT_RECV_TACAN_LIST struct SIMCONNECT_RECV_TACAN_LIST : public SIMCONNECT_RECV_FACILITIES_LIST { SIMCONNECT_DATA_FACILITY_TACAN rgData[1]; }; // SIMCONNECT_DATA_FACILITY_VOR struct SIMCONNECT_DATA_FACILITY_VOR : public SIMCONNECT_DATA_FACILITY_NDB { DWORD Flags; // SIMCONNECT_VOR_FLAGS float fLocalizer; // Localizer in degrees double GlideLat; // Glide Slope Location (deg, deg, meters) double GlideLon; double GlideAlt; float fGlideSlopeAngle; // Glide Slope in degrees }; // SIMCONNECT_RECV_VOR_LIST struct SIMCONNECT_RECV_VOR_LIST : public SIMCONNECT_RECV_FACILITIES_LIST { SIMCONNECT_DATA_FACILITY_VOR rgData[1]; }; // SIMCONNECT_DATATYPE_INITPOSITION struct SIMCONNECT_DATA_INITPOSITION { double Latitude; // degrees double Longitude; // degrees double Altitude; // feet double Pitch; // degrees double Bank; // degrees double Heading; // degrees DWORD OnGround; // 1=force to be on the ground DWORD Airspeed; // knots }; // SIMCONNECT_DATATYPE_MARKERSTATE struct SIMCONNECT_DATA_MARKERSTATE { char szMarkerName[64]; DWORD dwMarkerState; }; // SIMCONNECT_DATATYPE_WAYPOINT struct SIMCONNECT_DATA_WAYPOINT { double Latitude; // degrees double Longitude; // degrees double Altitude; // feet unsigned long Flags; double ktsSpeed; // knots double percentThrottle; }; // SIMCONNECT_DATA_XYZ struct SIMCONNECT_DATA_XYZ { double x; double y; double z; }; // SIMCONNECT_DATA_PBH struct SIMCONNECT_DATA_PBH { double Pitch; double Bank; double Heading; }; // SIMCONNECT_DATA_OBSERVER struct SIMCONNECT_DATA_OBSERVER { SIMCONNECT_DATA_LATLONALT Position; SIMCONNECT_DATA_PBH Rotation; DWORD Regime; BOOL RotateOnTarget; BOOL FocusFixed; float FocalLength; float FieldOfViewH; float FieldOfViewV; float LinearStep; float AngularStep; }; // SIMCONNECT_RECV_OBSERVER_DATA struct SIMCONNECT_RECV_OBSERVER_DATA : public SIMCONNECT_RECV { DWORD dwRequestID; char szObserverName[128]; SIMCONNECT_DATA_OBSERVER ObserverData; }; // Structure returned as array in SIMCONNECT_RECV_GROUND_INFO response to SimConnect_RequestGroundInfo API call struct SIMCONNECT_DATA_GROUND_INFO { BOOL bIsValid; // true = this data item is valid double fLat; // Latitude of this point (units based on SIMCONNECT_RECV_GROUND_INFO.eFlags) double fLon; // Longitude of this point (units based on SIMCONNECT_RECV_GROUND_INFO.eFlags) double fAlt; // Altitude of this point (units based on SIMCONNECT_RECV_GROUND_INFO.eFlags) double fNormalI; // I Component of normal at point double fNormalJ; // J Component of normal at point double fNormalK; // K Component of normal at point DWORD eSurfaceType; // Surface Type value DWORD eSurfaceCondition; // Surface Condition value BOOL bIsPlatform; // true = Point represents a platform BOOL bIsPlatformMoving; // true = Point represents a moving plaform }; // Response structure for SimConnect_RequestGroundInfo API Call struct SIMCONNECT_RECV_GROUND_INFO : public SIMCONNECT_RECV { DWORD dwRequestID; // Request ID for this reply DWORD dwGridWidth; // Grid Width asked for DWORD dwGridHeight; // Grid Hieght asked for DWORD dwArraySize; // Number of points in rgData (Grid Width * Grid Height) DWORD dwFlags; BOOL bNotAllValid; // true if any point in rgData returned no data // array of SIMCONNECT_DATA_GROUND_INFO structures SIMCONNECT_DATA_GROUND_INFO rgData[1]; }; // base data for external sim callbacks struct SIMCONNECT_RECV_EXTERNAL_SIM_BASE : public SIMCONNECT_RECV { GUID guidExternalSimID; DWORD dwObjectID; }; struct SIMCONNECT_RECV_EXTERNAL_SIM_CREATE : public SIMCONNECT_RECV_EXTERNAL_SIM_BASE { DWORD dwExternalSimVarCount; // number of simvars for this external sim DWORD dwExternalSimVarBase; // first index of simvars for this external sim char szExternalSimData[1]; // Variable length string payload containing data to pass along to the external sim }; struct SIMCONNECT_RECV_EXTERNAL_SIM_DESTROY : public SIMCONNECT_RECV_EXTERNAL_SIM_BASE { }; struct SIMCONNECT_RECV_EXTERNAL_SIM_SIMULATE : public SIMCONNECT_RECV_EXTERNAL_SIM_BASE { double fDeltaTime; BOOL bShouldSimulate; DWORD dwDefineID; DWORD dwDefineCount; // data count (number of datums, *not* byte count) DWORD dwData; // data begins here, dwDefineCount data items }; struct SIMCONNECT_RECV_EXTERNAL_SIM_LOCATION_CHANGED : public SIMCONNECT_RECV_EXTERNAL_SIM_BASE { double fLatRadians; double fLonRadians; double fAltMeters; BOOL bPlaceOnGround; BOOL bZeroSpeed; }; struct SIMCONNECT_RECV_EXTERNAL_SIM_EVENT : public SIMCONNECT_RECV_EXTERNAL_SIM_BASE { DWORD uEventID; DWORD dwData; }; #pragma pack(pop) //---------------------------------------------------------------------------- // End of Struct definitions //---------------------------------------------------------------------------- #if !defined(SIMCONNECTAPI) #define SIMCONNECTAPI extern "C" HRESULT __stdcall #endif typedef void (CALLBACK *DispatchProc)(SIMCONNECT_RECV* pData, DWORD cbData, void* pContext); SIMCONNECTAPI SimConnect_RetrieveString(SIMCONNECT_RECV * pData, DWORD cbData, void * pStringV, char ** pszString, DWORD * pcbString); SIMCONNECTAPI SimConnect_GetLastSentPacketID(HANDLE hSimConnect, DWORD * pdwError); SIMCONNECTAPI SimConnect_CallDispatch(HANDLE hSimConnect, DispatchProc pfcnDispatch, void * pContext); SIMCONNECTAPI SimConnect_GetNextDispatch(HANDLE hSimConnect, SIMCONNECT_RECV ** ppData, DWORD * pcbData); SIMCONNECTAPI SimConnect_RequestResponseTimes(HANDLE hSimConnect, DWORD nCount, float * fElapsedSeconds); SIMCONNECTAPI SimConnect_InsertString(BYTE * pDest, DWORD cbDest, BYTE ** ppEnd, DWORD * pcbStringV, const char * pSource); SIMCONNECTAPI SimConnect_Open(HANDLE * phSimConnect, LPCSTR szName, HWND hWnd, DWORD UserEventWin32, HANDLE hEventHandle, DWORD ConfigIndex); SIMCONNECTAPI SimConnect_Close(HANDLE hSimConnect); SIMCONNECTAPI SimConnect_MapClientEventToSimEvent(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, const char * EventName = ""); SIMCONNECTAPI SimConnect_TransmitClientEvent(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID, SIMCONNECT_CLIENT_EVENT_ID EventID, DWORD dwData, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, SIMCONNECT_EVENT_FLAG Flags); SIMCONNECTAPI SimConnect_SetSystemEventState(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, SIMCONNECT_STATE dwState); SIMCONNECTAPI SimConnect_AddClientEventToNotificationGroup(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, SIMCONNECT_CLIENT_EVENT_ID EventID, BOOL bMaskable = FALSE); SIMCONNECTAPI SimConnect_RemoveClientEvent(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, SIMCONNECT_CLIENT_EVENT_ID EventID); SIMCONNECTAPI SimConnect_SetNotificationGroupPriority(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, DWORD uPriority); SIMCONNECTAPI SimConnect_ClearNotificationGroup(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID); SIMCONNECTAPI SimConnect_RequestNotificationGroup(HANDLE hSimConnect, SIMCONNECT_NOTIFICATION_GROUP_ID GroupID, DWORD dwReserved = 0, DWORD Flags = 0); SIMCONNECTAPI SimConnect_AddToDataDefinition(HANDLE hSimConnect, SIMCONNECT_DATA_DEFINITION_ID DefineID, const char * DatumName, const char * UnitsName, SIMCONNECT_DATATYPE DatumType = SIMCONNECT_DATATYPE_FLOAT64, float fEpsilon = 0, DWORD DatumID = SIMCONNECT_UNUSED); SIMCONNECTAPI SimConnect_ClearDataDefinition(HANDLE hSimConnect, SIMCONNECT_DATA_DEFINITION_ID DefineID); SIMCONNECTAPI SimConnect_RequestDataOnSimObject(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, SIMCONNECT_DATA_DEFINITION_ID DefineID, SIMCONNECT_OBJECT_ID ObjectID, SIMCONNECT_PERIOD Period, SIMCONNECT_DATA_REQUEST_FLAG Flags = 0, DWORD origin = 0, DWORD interval = 0, DWORD limit = 0); SIMCONNECTAPI SimConnect_RequestDataOnSimObjectType(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, SIMCONNECT_DATA_DEFINITION_ID DefineID, DWORD dwRadiusMeters, SIMCONNECT_SIMOBJECT_TYPE type); SIMCONNECTAPI SimConnect_SetDataOnSimObject(HANDLE hSimConnect, SIMCONNECT_DATA_DEFINITION_ID DefineID, SIMCONNECT_OBJECT_ID ObjectID, SIMCONNECT_DATA_SET_FLAG Flags, DWORD ArrayCount, DWORD cbUnitSize, void * pDataSet); SIMCONNECTAPI SimConnect_MapInputEventToClientEvent(HANDLE hSimConnect, SIMCONNECT_INPUT_GROUP_ID GroupID, const char * szInputDefinition, SIMCONNECT_CLIENT_EVENT_ID DownEventID, DWORD DownValue = 0, SIMCONNECT_CLIENT_EVENT_ID UpEventID = (SIMCONNECT_CLIENT_EVENT_ID)SIMCONNECT_UNUSED, DWORD UpValue = 0, BOOL bMaskable = FALSE); SIMCONNECTAPI SimConnect_SetInputGroupPriority(HANDLE hSimConnect, SIMCONNECT_INPUT_GROUP_ID GroupID, DWORD uPriority); SIMCONNECTAPI SimConnect_RemoveInputEvent(HANDLE hSimConnect, SIMCONNECT_INPUT_GROUP_ID GroupID, const char * szInputDefinition); SIMCONNECTAPI SimConnect_ClearInputGroup(HANDLE hSimConnect, SIMCONNECT_INPUT_GROUP_ID GroupID); SIMCONNECTAPI SimConnect_SetInputGroupState(HANDLE hSimConnect, SIMCONNECT_INPUT_GROUP_ID GroupID, DWORD dwState); SIMCONNECTAPI SimConnect_RequestReservedKey(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, const char * szKeyChoice1 = "", const char * szKeyChoice2 = "", const char * szKeyChoice3 = ""); SIMCONNECTAPI SimConnect_SubscribeToSystemEvent(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, const char * SystemEventName); SIMCONNECTAPI SimConnect_UnsubscribeFromSystemEvent(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID); SIMCONNECTAPI SimConnect_WeatherRequestInterpolatedObservation(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, float lat, float lon, float alt); SIMCONNECTAPI SimConnect_WeatherRequestObservationAtStation(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const char * szICAO); SIMCONNECTAPI SimConnect_WeatherRequestObservationAtNearestStation(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, float lat, float lon); SIMCONNECTAPI SimConnect_WeatherCreateStation(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const char * szICAO, const char * szName, float lat, float lon, float alt); SIMCONNECTAPI SimConnect_WeatherRemoveStation(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const char * szICAO); SIMCONNECTAPI SimConnect_WeatherSetObservation(HANDLE hSimConnect, DWORD Seconds, const char * szMETAR); SIMCONNECTAPI SimConnect_WeatherSetModeServer(HANDLE hSimConnect, DWORD dwPort, DWORD dwSeconds); SIMCONNECTAPI SimConnect_WeatherSetModeTheme(HANDLE hSimConnect, const char * szThemeName); SIMCONNECTAPI SimConnect_WeatherSetModeGlobal(HANDLE hSimConnect); SIMCONNECTAPI SimConnect_WeatherSetModeCustom(HANDLE hSimConnect); SIMCONNECTAPI SimConnect_WeatherSetDynamicUpdateRate(HANDLE hSimConnect, DWORD dwRate); SIMCONNECTAPI SimConnect_WeatherRequestCloudState(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, float minLat, float minLon, float minAlt, float maxLat, float maxLon, float maxAlt, DWORD dwFlags = 0); SIMCONNECTAPI SimConnect_WeatherCreateThermal(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, float lat, float lon, float alt, float radius, float height, float coreRate = 3.0f, float coreTurbulence = 0.05f, float sinkRate = 3.0f, float sinkTurbulence = 0.2f, float coreSize = 0.4f, float coreTransitionSize = 0.1f, float sinkLayerSize = 0.4f, float sinkTransitionSize = 0.1f); SIMCONNECTAPI SimConnect_WeatherRemoveThermal(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID); SIMCONNECTAPI SimConnect_AICreateParkedATCAircraft(HANDLE hSimConnect, const char * szContainerTitle, const char * szTailNumber, const char * szAirportID, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AICreateEnrouteATCAircraft(HANDLE hSimConnect, const char * szContainerTitle, const char * szTailNumber, int iFlightNumber, const char * szFlightPlanPath, double dFlightPlanPosition, BOOL bTouchAndGo, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AICreateNonATCAircraft(HANDLE hSimConnect, const char * szContainerTitle, const char * szTailNumber, SIMCONNECT_DATA_INITPOSITION InitPos, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AICreateSimulatedObject(HANDLE hSimConnect, const char * szContainerTitle, SIMCONNECT_DATA_INITPOSITION InitPos, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AIReleaseControl(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AIRemoveObject(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AISetAircraftFlightPlan(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID, const char * szFlightPlanPath, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_ExecuteMissionAction(HANDLE hSimConnect, const GUID guidInstanceId); SIMCONNECTAPI SimConnect_CompleteCustomMissionAction(HANDLE hSimConnect, const GUID guidInstanceId); SIMCONNECTAPI SimConnect_CameraSetRelative6DOF(HANDLE hSimConnect, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg); SIMCONNECTAPI SimConnect_MenuAddItem(HANDLE hSimConnect, const char * szMenuItem, SIMCONNECT_CLIENT_EVENT_ID MenuEventID, DWORD dwData); SIMCONNECTAPI SimConnect_MenuDeleteItem(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID MenuEventID); SIMCONNECTAPI SimConnect_MenuAddSubItem(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID MenuEventID, const char * szMenuItem, SIMCONNECT_CLIENT_EVENT_ID SubMenuEventID, DWORD dwData); SIMCONNECTAPI SimConnect_MenuDeleteSubItem(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID MenuEventID, const SIMCONNECT_CLIENT_EVENT_ID SubMenuEventID); SIMCONNECTAPI SimConnect_RequestSystemState(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const char * szState); SIMCONNECTAPI SimConnect_SetSystemState(HANDLE hSimConnect, const char * szState, DWORD dwInteger, float fFloat, const char * szString); SIMCONNECTAPI SimConnect_MapClientDataNameToID(HANDLE hSimConnect, const char * szClientDataName, SIMCONNECT_CLIENT_DATA_ID ClientDataID); SIMCONNECTAPI SimConnect_CreateClientData(HANDLE hSimConnect, SIMCONNECT_CLIENT_DATA_ID ClientDataID, DWORD dwSize, SIMCONNECT_CREATE_CLIENT_DATA_FLAG Flags); SIMCONNECTAPI SimConnect_AddToClientDataDefinition(HANDLE hSimConnect, SIMCONNECT_CLIENT_DATA_DEFINITION_ID DefineID, DWORD dwOffset, DWORD dwSizeOrType, float fEpsilon = 0, DWORD DatumID = SIMCONNECT_UNUSED); SIMCONNECTAPI SimConnect_ClearClientDataDefinition(HANDLE hSimConnect, SIMCONNECT_CLIENT_DATA_DEFINITION_ID DefineID); SIMCONNECTAPI SimConnect_RequestClientData(HANDLE hSimConnect, SIMCONNECT_CLIENT_DATA_ID ClientDataID, SIMCONNECT_DATA_REQUEST_ID RequestID, SIMCONNECT_CLIENT_DATA_DEFINITION_ID DefineID, SIMCONNECT_CLIENT_DATA_PERIOD Period = SIMCONNECT_CLIENT_DATA_PERIOD_ONCE, SIMCONNECT_CLIENT_DATA_REQUEST_FLAG Flags = 0, DWORD origin = 0, DWORD interval = 0, DWORD limit = 0); SIMCONNECTAPI SimConnect_SetClientData(HANDLE hSimConnect, SIMCONNECT_CLIENT_DATA_ID ClientDataID, SIMCONNECT_CLIENT_DATA_DEFINITION_ID DefineID, SIMCONNECT_CLIENT_DATA_SET_FLAG Flags, DWORD dwReserved, DWORD cbUnitSize, void * pDataSet); SIMCONNECTAPI SimConnect_FlightLoad(HANDLE hSimConnect, const char * szFileName); SIMCONNECTAPI SimConnect_FlightSave(HANDLE hSimConnect, const char * szFileName, const char * szTitle, const char * szDescription, DWORD Flags); SIMCONNECTAPI SimConnect_FlightPlanLoad(HANDLE hSimConnect, const char * szFileName); SIMCONNECTAPI SimConnect_Text(HANDLE hSimConnect, SIMCONNECT_TEXT_TYPE type, float fTimeSeconds, SIMCONNECT_CLIENT_EVENT_ID EventID, DWORD cbUnitSize, void * pDataSet); SIMCONNECTAPI SimConnect_SubscribeToFacilities(HANDLE hSimConnect, SIMCONNECT_FACILITY_LIST_TYPE type, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_UnsubscribeToFacilities(HANDLE hSimConnect, SIMCONNECT_FACILITY_LIST_TYPE type); SIMCONNECTAPI SimConnect_RequestFacilitiesList(HANDLE hSimConnect, SIMCONNECT_FACILITY_LIST_TYPE type, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_ChangeVehicle(HANDLE hSimConnect, const char * vehicleName); SIMCONNECTAPI SimConnect_SetCameraRenderSettings(HANDLE hSimConnect, const GUID guidCamera, DWORD dwFlags); SIMCONNECTAPI SimConnect_SendCameraCommand(HANDLE hSimConnect, const GUID guidCamera, SIMCONNECT_CAMERA_COMMAND eCommand); SIMCONNECTAPI SimConnect_CreateObserver(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_OBSERVER ObserverData); SIMCONNECTAPI SimConnect_RequestObserverData(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const char * szName); SIMCONNECTAPI SimConnect_MoveObserver(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_XYZ Translation); SIMCONNECTAPI SimConnect_RotateObserver(HANDLE hSimConnect, const char * szName, DWORD dwAxis, double dAngleDegrees); SIMCONNECTAPI SimConnect_SetObserverPosition(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_LATLONALT Position); SIMCONNECTAPI SimConnect_SetObserverRotation(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_PBH RotationAngles); SIMCONNECTAPI SimConnect_SetObserverLookAt(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_LATLONALT TargetPosition); SIMCONNECTAPI SimConnect_SetObserverFieldOfView(HANDLE hSimConnect, const char * szName, float fHorizontal, float fVertical); SIMCONNECTAPI SimConnect_SetObserverStepSize(HANDLE hSimConnect, const char * szName, float fLinearStep, float fAngularStep); SIMCONNECTAPI SimConnect_SetObserverFocalLength(HANDLE hSimConnect, const char * szName, float fFocalLength); SIMCONNECTAPI SimConnect_SetObserverFocusFixed(HANDLE hSimConnect, const char * szName, BOOL bFocusFixed); SIMCONNECTAPI SimConnect_SetObserverRegime(HANDLE hSimConnect, const char * szName, DWORD eRegime); SIMCONNECTAPI SimConnect_SetObserverZoomLevels(HANDLE hSimConnect, const char * szName, DWORD dwNumLevels); SIMCONNECTAPI SimConnect_RequestGroundInfo(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, double minLat, double minLon, double minAlt, double maxLat, double maxLon, double maxAlt, DWORD dwGridWidth, DWORD dwGridHeight, SIMCONNECT_GROUND_INFO_LATLON_FORMAT eLatLonFormat, SIMCONNECT_GROUND_INFO_ALT_FORMAT eAltFormat, SIMCONNECT_GROUND_INFO_SOURCE_FLAG eSourceFlags); SIMCONNECTAPI SimConnect_RequestGroundInfoOnSimObject(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, DWORD ObjectID, double offLat, double offsetLon, double offsetAlt, DWORD dwGridWidth, DWORD dwGridHeight, SIMCONNECT_GROUND_INFO_LATLON_FORMAT eLatLonFormat, SIMCONNECT_GROUND_INFO_ALT_FORMAT eAltFormat, SIMCONNECT_GROUND_INFO_SOURCE_FLAG eSourceFlags, SIMCONNECT_PERIOD Period, SIMCONNECT_DATA_REQUEST_FLAG Flags = 0, DWORD origin = 0, DWORD interval = 0, DWORD limit = 0); SIMCONNECTAPI SimConnect_RegisterExternalSim(HANDLE hSimConnect, const GUID guidExternalSimID, SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG CallbackMask, SIMCONNECT_DATA_DEFINITION_ID DefineID); SIMCONNECTAPI SimConnect_UnregisterExternalSim(HANDLE hSimConnect, const GUID guidExternalSimID); SIMCONNECTAPI SimConnect_RegisterExternalSecondarySim(HANDLE hSimConnect, const GUID guidExternalSecondarySimID, SIMCONNECT_EXTERNAL_SIM_CALLBACK_FLAG CallbackMask, SIMCONNECT_DATA_DEFINITION_ID DefineID); SIMCONNECTAPI SimConnect_UnregisterExternalSecondarySim(HANDLE hSimConnect, const GUID guidExternalSecondarySimID); SIMCONNECTAPI SimConnect_AttachExternalSecondarySimToSimObject(HANDLE hSimConnect, DWORD dwObjectID, const GUID guidExternalSecondarySimID, const char * szExternalSimParams, DWORD dwExternalSimVarCount); SIMCONNECTAPI SimConnect_DetachExternalSecondarySimFromSimObject(HANDLE hSimConnect, DWORD dwObjectID, const GUID guidExternalSecondarySimID); SIMCONNECTAPI SimConnect_AICreateObjectWithExternalSim(HANDLE hSimConnect, const char * szContainerTitle, SIMCONNECT_DATA_INITPOSITION InitPos, SIMCONNECT_DATA_REQUEST_ID RequestID, const GUID guidExternalSimID, const char * szExternalSimParams, DWORD dwExternalSimVarCount); SIMCONNECTAPI SimConnect_ChangeVehicleWithExternalSim(HANDLE hSimConnect, const char * szContainerTitle, const GUID guidExternalSimID, const char * szExternalSimParams, DWORD dwExternalSimVarCount); SIMCONNECTAPI SimConnect_RequestSynchronousBlock(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, SIMCONNECT_PERIOD Period, SIMCONNECT_DATA_REQUEST_FLAG Flags = 0, DWORD origin = 0, DWORD interval = 0, DWORD limit = 0); SIMCONNECTAPI SimConnect_SynchronousUnblock(HANDLE hSimConnect); SIMCONNECTAPI SimConnect_SetSynchronousTimeout(HANDLE hSimConnect, float fTimeSeconds); SIMCONNECTAPI SimConnect_SubscribeToSystemEventEx(HANDLE hSimConnect, SIMCONNECT_CLIENT_EVENT_ID EventID, const char * SystemEventName, SIMCONNECT_EVENT_SUBSCRIPTION_FLAG Flags); SIMCONNECTAPI SimConnect_AttachObjectToSimObject(HANDLE hSimConnect, DWORD dwObjectID, SIMCONNECT_DATA_XYZ vecOff1, SIMCONNECT_DATA_PBH rotOff1, const char * szContainerTitle, SIMCONNECT_DATA_XYZ vecOff2, SIMCONNECT_DATA_PBH rotOff2, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_AttachSimObjectToSimObject(HANDLE hSimConnect, DWORD dwObjectID1, SIMCONNECT_DATA_XYZ vecOff1, SIMCONNECT_DATA_PBH rotOff1, DWORD dwObjectID2, SIMCONNECT_DATA_XYZ vecOff2, SIMCONNECT_DATA_PBH rotOff2); SIMCONNECTAPI SimConnect_ReleaseSimObjectFromSimObject(HANDLE hSimConnect, DWORD dwObjectID1, DWORD dwObjectID2); SIMCONNECTAPI SimConnect_AISetGroundClamp(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID, BOOL bGroundClamp = TRUE); SIMCONNECTAPI SimConnect_SetCameraColorizationMode(HANDLE hSimConnect, const char * szName, int eColorizationMode); SIMCONNECTAPI SimConnect_SetCameraSensorMode(HANDLE hSimConnect, const char * szName, SIMCONNECT_CAMERA_SENSOR_MODE eSensorMode); SIMCONNECTAPI SimConnect_CreateEffect(HANDLE hSimConnect, const char * effectName, SIMCONNECT_DATA_LATLONALT TargetPosition, SIMCONNECT_DATA_XYZ offset, BOOL attachToSimObject, DWORD dwObjectID, SIMCONNECT_DATA_REQUEST_ID RequestID, int effectDuration = -1); SIMCONNECTAPI SimConnect_RemoveEffect(HANDLE hSimConnect, const DWORD effectId); SIMCONNECTAPI SimConnect_AttachWeaponToObject(HANDLE hSimConnect, const char * szContainerTitle, DWORD dwObjectID, int hardpointIndex, int numOfRounds); SIMCONNECTAPI SimConnect_ClearWeapons(HANDLE hSimConnect, DWORD dwObjectID); SIMCONNECTAPI SimConnect_CreateCameraDefinition(HANDLE hSimConnect, const GUID guidCamera, SIMCONNECT_CAMERA_TYPE ViewType, const char * szTitle, SIMCONNECT_DATA_XYZ xyzBias, SIMCONNECT_DATA_PBH pbhBias); SIMCONNECTAPI SimConnect_CreateCameraInstance(HANDLE hSimConnect, const GUID guidCamera, const char * szName, SIMCONNECT_OBJECT_ID dwObjectID, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_DeleteCameraInstance(HANDLE hSimConnect, const GUID guidCamera, UINT32 instanceId); SIMCONNECTAPI SimConnect_SetCameraHorizontalFov(HANDLE hSimConnect, const char * szName, float hFov); SIMCONNECTAPI SimConnect_SetCameraVerticalFov(HANDLE hSimConnect, const char * szName, float vFov); SIMCONNECTAPI SimConnect_SetCameraFov(HANDLE hSimConnect, const char * szName, float hFov, float vFov); SIMCONNECTAPI SimConnect_CameraSetRelative6DofByName(HANDLE hSimConnect, const char * szName, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg); SIMCONNECTAPI SimConnect_SetMainCameraSensorMode(HANDLE hSimConnect, SIMCONNECT_CAMERA_SENSOR_MODE eSensorMode); SIMCONNECTAPI SimConnect_SetMainCameraHorizontalFov(HANDLE hSimConnect, float hFov); SIMCONNECTAPI SimConnect_SetMainCameraVerticalFov(HANDLE hSimConnect, float vFov); SIMCONNECTAPI SimConnect_SetMainCameraFov(HANDLE hSimConnect, float hFov, float vFov); SIMCONNECTAPI SimConnect_CameraZoomIn(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_CameraZoomOut(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_MainCameraZoomIn(HANDLE hSimConnect); SIMCONNECTAPI SimConnect_MainCameraZoomOut(HANDLE hSimConnect); SIMCONNECTAPI SimConnect_OpenView(HANDLE hSimConnect, const char * szName, const char * szTitle = NULL); SIMCONNECTAPI SimConnect_CloseView(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_UndockView(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_DockView(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_SetCameraWindowPosition(HANDLE hSimConnect, const char * szName, UINT uX, UINT uY); SIMCONNECTAPI SimConnect_SetCameraWindowSize(HANDLE hSimConnect, const char * szName, UINT uWidth, UINT uHeight); SIMCONNECTAPI SimConnect_ChangeView(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_AddPostProcess(HANDLE hSimConnect, const char * szCameraName, const char * szPostProcessName); SIMCONNECTAPI SimConnect_AddPostProcessMainCamera(HANDLE hSimConnect, const char * szPostProcessName); SIMCONNECTAPI SimConnect_RemovePostProcess(HANDLE hSimConnect, const char * szCameraName, const char * szPostProcessName); SIMCONNECTAPI SimConnect_RemovePostProcessMainCamera(HANDLE hSimConnect, const char * szPostProcessName); SIMCONNECTAPI SimConnect_CameraSmoothRelative6DOF(HANDLE hSimConnect, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg, float fSmoothTime = 0); SIMCONNECTAPI SimConnect_CameraSmoothRelative6DofByName(HANDLE hSimConnect, const char * szName, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg, float fSmoothTime = 0); SIMCONNECTAPI SimConnect_CameraPanToView(HANDLE hSimConnect, const char * szCameraName, const char * szTargetName, float fSmoothTime = 0); SIMCONNECTAPI SimConnect_MainCameraPanToView(HANDLE hSimConnect, const char * szTargetName, float fSmoothTime = 0); SIMCONNECTAPI SimConnect_AICreateSimulatedObjectEx(HANDLE hSimConnect, const char * szContainerTitle, SIMCONNECT_DATA_INITPOSITION InitPos, SIMCONNECT_DATA_REQUEST_ID RequestID, BOOL isDisabled = FALSE, int OwnerID = -1); SIMCONNECTAPI SimConnect_AIReleaseControlEx(HANDLE hSimConnect, SIMCONNECT_OBJECT_ID ObjectID, SIMCONNECT_DATA_REQUEST_ID RequestID, BOOL destroyAI = FALSE); SIMCONNECTAPI SimConnect_ReportWeaponDamage(HANDLE hSimConnect, SIMCONNECT_DATA_OBJECT_DAMAGED_BY_WEAPON WeaponDamageData); SIMCONNECTAPI SimConnect_RequestVersion(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestSceneryComplexity(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestShadowFlags(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_ObserverTrackEntityOn(HANDLE hSimConnect, const char * szName, DWORD dwObjectID); SIMCONNECTAPI SimConnect_ObserverTrackEntityOff(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_ObserverAttachToEntityOn(HANDLE hSimConnect, const char * szName, DWORD dwObjectID, SIMCONNECT_DATA_XYZ Offset); SIMCONNECTAPI SimConnect_ObserverAttachToEntityOff(HANDLE hSimConnect, const char * szName); SIMCONNECTAPI SimConnect_SetObserverLookAtEx(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_LATLONALT TargetPosition); SIMCONNECTAPI SimConnect_RequestCameraFov(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestCameraRelative6DOF(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestCameraRelative6DofByName(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestCameraSensorMode(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestCameraWindowPosition(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestCameraWindowSize(HANDLE hSimConnect, const char * szName, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestMainCameraFov(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestMainCameraSensorMode(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestGoalDataByGUID(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const GUID guidInstanceID); SIMCONNECTAPI SimConnect_RequestGoalDataByIndex(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, int goalIndex); SIMCONNECTAPI SimConnect_ResolveGoal(HANDLE hSimConnect, const GUID guidInstanceID, SIMCONNECT_GOAL_RESOLUTION goalResolution); SIMCONNECTAPI SimConnect_RequestGoalCount(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestMissionObjectiveCount(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestMissionObjectiveDataByGUID(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const GUID guidInstanceID); SIMCONNECTAPI SimConnect_RequestMissionObjectiveDataByIndex(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, int missionObjectiveIndex); SIMCONNECTAPI SimConnect_RequestFlightSegmentCount(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID); SIMCONNECTAPI SimConnect_RequestFlightSegmentDataByGUID(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const GUID guidInstanceID); SIMCONNECTAPI SimConnect_RequestFlightSegmentDataByIndex(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, int flightSegmentIndex); SIMCONNECTAPI SimConnect_RequestFlightSegmentRangeData(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, const GUID guidInstanceID, int rangeIndex); #endif // _SIMCONNECT_H_ |