# SenseGlove Unreal Engine Plugin ## ⚠️ DISCLAIMER: Experimental Release This is an initial experimental release for public evaluation and may not be considered *production ready*, yet. This repository is under active development and there might be known or unknown bugs lurking around. Use it at your own risk. ## Platform Support Matrix | | **Windows
(MSVC 2019)** | **Windows
(MSVC 2022)** | **Linux
(Native Toolchain)** | **macOS** | **Oculus Mobile
(Android NDK r21b)** | |----------|:--------------------------:|:--------------------------:|:-------------------------------:|:---------:|:---------------------------------------:| | **4.22** | ✅ | ❌ | ✅ | ❌ | ❌ | | **4.23** | ✅ | ❌ | ✅ | ❌ | ❌ | | **4.24** | ✅ | ❌ | ✅ | ❌ | ❌ | | **4.25** | ✅ | ❌ | ✅ | ❌ | ❓ | | **4.26** | ✅ | ❌ | ✅ | ❌ | ❓ | | **4.27** | ✅ | ✅ | ✅ | ❌ | ❓ | | **5.0** | ✅ | ✅ | ✅ | ❌ | ❓ | | **5.1** | ✅ | ✅ | ✅ | ❌ | ❓ | * Supported * Not Supported * Unknown or Untested Remarks: * Microsoft Visual Studio 2022 is not supported by Unreal Engine 4.22 through 4.26. * All third-party libraries on Windows built against Windows SDK 10.0. * Oculus support is only provided through the recommended Android NDK r21b by Epic Games. * Supporting Unreal Engine 4.22 through 4.24 for Oculus development is a huge challenge due to limited Android NDK support (r14b to r18b); firstly, because of uncomplete C++11 standard library support, and second, as a result of a known bug in Unreal Engine, which falsely detects NDK r18b as unsupported r18c. Thus, only Unreal Engine 4.25+ support is provided for Android/Oculus development. Third, [wjwwood/serial](https://github.com/wjwwood/serial) requires Android NDK API Level 28+ in order to be built successfully, thus some older NDKs such as r14b, which is the recommended NDK by Epic Games for 4.22 to 4.24 cannot build the serial library. * All third-party libraries target Android NDK API Level 29, thus any project relying on the plug-in should be build with the same NDK API Level. ## Documentation The Blueprints documentation will be coming soon. For the C++ documentation, since this plugin builds on top of [SGConnect](https://senseglove.gitlab.io/SenseGloveDocs/native/core-api-intro.html#sgconnect) and [SGCoreCpp](https://senseglove.gitlab.io/SenseGloveDocs/native/core-api-intro.html#sgcorecpp) third-party C++ libraries, please refer to [the upstream documentation](https://senseglove.gitlab.io/SenseGloveDocs/native/cpp-reference.html). Also, you could refer to the header files in every module for extensive documentation, or the equivalent Blueprints documentation. The following modules are intended to be used by the C++ users of this plugin: * SenseGloveConnect module which only uses a very small subset of the Core SGConnect libary. * SenseGloveCore module which is mostly a one-on-one wrapper call to most of the SGCoreCpp library with slight differences. Please note that modules postfixed with **Impl** are intended for interal use and are discouraged to be used by the users of the API. The modules postfixed with **Kismet** are exposing the functionality of the equivalent modules to Blueprints. For other modules descriptions, please see [the Directory Structure section](#directory-structure). ## Directory Structure ``` Source │ ├── Resources │ ├── Source (various plug-in modules) │ │ │ ├── SenseGlove (the UE-specific high-level API) │ │ │ ├── SenseGloveBuildHacks (uses Excepttions and RTTI, internally used for compiler-specific build hacks) │ │ │ ├── SenseGloveConnect (exposes part of the SGConnect low-level API to C++ and Blueprints) │ │ │ ├── SenseGloveConnectImpl (uses Excepttions and RTTI, intended for internal use only) │ │ │ ├── SenseGloveConnectKismet (SGConnect functionality exposed to Blueprints) │ │ │ ├── SenseGloveCore (exposes part of the SGCoreCpp low-level API to C++ and Blueprints) │ │ │ ├── SenseGloveCoreImpl (uses Excepttions and RTTI, intended for internal use only) │ │ │ ├── SenseGloveCoreKismet (SGCoreCpp functionality exposed to Blueprints) │ │ │ ├── SenseGloveEditor (the Editor module) │ │ │ ├── SenseGloveInterop (internally used for interoperability between RTTI disabled/enabled modules) │ │ │ ├── SenseGloveKismet(exposes Blueprints-specific functionality from the SenseGlove module) │ │ │ ├── SenseGloveLog (internal log module) │ │ │ ├── SenseGloveTypes (exposes various enums from the backend libraries) │ │ │ └── SenseGloveUtils (internal utility module) │ └── ThirdParty (3rd-party dependencies) │ ├── include (header files) │ │ │ ├── boost │ │ │ ├── SenseGlove │ │ │ │ │ ├── Connect (SGConnect headers) │ │ │ │ │ └── Core (SGCoreCpp headers) │ │ │ └── serial │ └── lib (platform-specific pre-built binary dependencies) │ ├── linux │ │ │ ├── v13 (UE 4.22 Linux dependencies) │ │ │ │ │ ├── debug │ │ │ │ │ └── release │ │ │ ├── v15 (UE 4.23 and 4.24 Linux dependencies) │ │ │ │ │ ├── debug │ │ │ │ │ └── release │ │ │ ├── v16 (UE 4.25 Linux dependencies) │ │ │ │ │ ├── debug │ │ │ │ │ └── release │ │ │ ├── v17 (UE 4.26 Linux dependencies) │ │ │ │ │ ├── debug │ │ │ │ │ └── release │ │ │ ├── v19 (UE 4.27 Linux dependencies) │ │ │ │ │ ├── debug │ │ │ │ │ └── release │ │ │ └── v20 (UE 5.0 Linux dependencies) │ │ │ ├── debug │ │ │ └── release │ ├── oculus │ │ │ ├── debug │ │ │ └── release │ └── win64 │ ├── msvc142 (Microsoft Visual Studio 2019 dependencies) │ │ │ ├── debug │ │ │ └── release │ └── msvc143 (Microsoft Visual Studio 2022 dependencies) │ ├── debug │ └── release ``` ## Licenses ### SenseGlove Unreal Engine Plug-in License The SenseGlove plug-in for Unreal Engine is licensed under the terms of the [MIT License](LICENSE.md). ### Third-Party Licenses Please note that while the SenseGlove plug-in for Unreal Engine is made available under the [MIT License](LICENSE.md), it utilizes a few third-party libraries with permissive free licenses as well, in order to power various components. For a list of these libraries and their own respective open-source licenses take a look at [LICENSE-THIRD-PARTY.md](LICENSE-THIRD-PARTY.md), please.