swift
main.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #ifndef NOMINMAX
5 # define NOMINMAX
6 #endif
7 
8 // clang-format off
9 #include "plugin.h"
10 #include "traffic.h"
11 #include "utils.h"
12 #include <XPLM/XPLMPlanes.h>
13 #include <XPLM/XPLMPlugin.h>
14 #include <cstring>
15 // clang-format on
16 
17 #if !defined(XPLM210)
18 # define XPLM_MSG_LIVERY_LOADED 108
19 #endif
20 
21 static XSwiftBus::CPlugin *g_plugin = nullptr;
22 
23 PLUGIN_API int XPluginStart(char *o_name, char *o_sig, char *o_desc)
24 {
25 #ifdef APL
26  // https://developer.x-plane.com/2014/12/mac-plugin-developers-you-should-be-using-native-paths/
27  XPLMEnableFeature("XPLM_USE_NATIVE_PATHS", 1);
28 #endif
29 
30  INFO_LOG("xswiftbus plugin starting");
31  std::strcpy(o_name, "xswiftbus");
32  std::strcpy(o_sig, "org.swift-project.xswiftbus");
33  std::strcpy(o_desc, "Allows swift to connect to X-Plane via D-Bus IPC");
34  return 1;
35 }
36 
37 PLUGIN_API void XPluginStop()
38 {
39  // void
40 }
41 
42 PLUGIN_API int XPluginEnable()
43 {
44  g_plugin = new XSwiftBus::CPlugin;
45  return 1;
46 }
47 
48 PLUGIN_API void XPluginDisable() { delete g_plugin; }
49 
50 PLUGIN_API void XPluginReceiveMessage(XPLMPluginID from, long msg, void *param)
51 {
52  if (from == XPLM_PLUGIN_XPLANE)
53  {
54  if (!g_plugin || !g_plugin->isRunning())
55  {
56  WARNING_LOG("Received message, but plugin NOT running");
57  return;
58  }
59 
60  switch (msg)
61  {
62  case XPLM_MSG_PLANE_LOADED:
63  case XPLM_MSG_LIVERY_LOADED:
64  if (reinterpret_cast<intptr_t>(param) == XPLM_USER_AIRCRAFT) { g_plugin->onAircraftModelChanged(); }
65  break;
66 
67  case XPLM_MSG_AIRPORT_LOADED: g_plugin->onAircraftRepositioned(); break;
68 
69  case XPLM_MSG_SCENERY_LOADED: g_plugin->onSceneryLoaded(); break;
70  }
71  }
72 }
Main plugin class.
Definition: plugin.h:42
void onSceneryLoaded()
Called by XPluginReceiveMessage when some scenery is loaded.
Definition: plugin.cpp:156
void onAircraftRepositioned()
Called by XPluginReceiveMessage when the aircraft is positioned at an airport.
Definition: plugin.cpp:151
void onAircraftModelChanged()
Called by XPluginReceiveMessage when the model is changed.
Definition: plugin.cpp:142
bool isRunning() const
Is running.
Definition: plugin.h:60
#define INFO_LOG(msg)
Logger convenience macros.
Definition: utils.h:50
#define WARNING_LOG(msg)
Logger convenience macros.
Definition: utils.h:51