swift
Loading...
Searching...
No Matches
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
21static XSwiftBus::CPlugin *g_plugin = nullptr;
22
23PLUGIN_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
37PLUGIN_API void XPluginStop()
38{
39 // void
40}
41
42PLUGIN_API int XPluginEnable()
43{
44 g_plugin = new XSwiftBus::CPlugin;
45 return 1;
46}
47
48PLUGIN_API void XPluginDisable() { delete g_plugin; }
49
50PLUGIN_API void XPluginReceiveMessage(XPLMPluginID from, long msg, const 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)
65 {
66 g_plugin->onAircraftModelChanged();
67 }
68 break;
69
70 case XPLM_MSG_AIRPORT_LOADED: g_plugin->onAircraftRepositioned(); break;
71
72 case XPLM_MSG_SCENERY_LOADED: g_plugin->onSceneryLoaded(); break;
73 }
74 }
75}
Main plugin class.
Definition plugin.h:42
#define INFO_LOG(msg)
Logger convenience macros.
Definition utils.h:49
#define WARNING_LOG(msg)
Logger convenience macros.
Definition utils.h:50