Compare commits

...
21 Commits
Author SHA1 Message Date
Mamadou Babaei 08e8eec206 bump the plugin version to v1.1.0 2023-02-03 13:43:41 +01:00
Mamadou Babaei b47de02afe switch to sgconnect for android v1.1.0 extracted from the .arr file shipped with our unity plugin 2023-02-03 13:43:41 +01:00
Mamadou Babaei e58522bfd1 bump senseglove libraries to v2.1.1-0569c74 2023-02-03 13:43:41 +01:00
Mamadou Babaei a3827277b1 use the correct writehaptics signature extracted from the .jar file 2023-02-03 13:43:41 +01:00
Mamadou Babaei 5c6f9ad18b mention sgconnect for android as an added dependency in the changelog 2023-02-03 13:43:41 +01:00
Mamadou Babaei f3845ef65f update the platform support matrix and the directory structure 2023-02-03 13:43:41 +01:00
Mamadou Babaei 1c7b1891f7 log the unreleased changes 2023-02-03 13:43:41 +01:00
Mamadou Babaei 54bda06bdc bump sgconnect and sgcore to v2.1.0-9080621 and add an almost functional android implementation 2023-02-03 13:43:40 +01:00
Mamadou Babaei f9dbc1f11e try to offload android to sgcore/sgconnect third-party libraries and drop linux third-party libraries for earlier versions of the engine prior to 4.27 2023-02-03 13:43:40 +01:00
Mamadou Babaei 16df85607d minor documentation fixes 2023-02-03 13:43:40 +01:00
Mamadou Babaei 7ec9e80c3a drop linux third-party libraries for earlier versions of the engine prior to 4.27 2023-02-03 13:43:40 +01:00
Mamadou Babaei 0f514a2f95 fix a bug in the jni call write haptics 2023-02-03 13:43:40 +01:00
Mamadou Babaei 14ebc3327b replace more method calls on android with the equivalents from sgconnect for android 2023-02-03 13:43:40 +01:00
Mamadou Babaei 3b6a2341fa bump copyright years 2023-02-03 13:43:40 +01:00
Mamadou Babaei fb5babc0f1 add an android module with working jni calls to Init(), Dispose(), and GetLibraryVersion() 2023-02-03 13:43:39 +01:00
Mamadou Babaei 4db4bf397a log the unreleased changes 2023-02-03 13:43:39 +01:00
Mamadou Babaei 6ef49c204c remove the enum utils class due to ANY_PACKAGE deprecation warnings in unreal engine 5.1 2023-02-03 13:43:39 +01:00
Mamadou Babaei 2785c1ae38 conform to the class naming standards 2023-02-03 13:43:39 +01:00
Mamadou Babaei 756abf819d apply const correctness 2023-02-03 13:43:39 +01:00
Mamadou Babaei 7bfb6c1517 whitelist android as a target platform 2023-02-03 13:43:39 +01:00
Mamadou Babaei f916999716 fix android build issues caused by the log module 2023-02-03 13:43:39 +01:00
777 changed files with 2121 additions and 897 deletions
+21
View File
@@ -5,6 +5,27 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.1.0] - 2023-02-03
### Added
- Whitelist Android as a target platform.
- Introduce Android support.
- Add third-pary library SGConnect for Android v1.1.0.
### Fixed
- Fix Android build issues caused by the log module.
### Changed
- SGConnect and SGCore libraries have been updated to v2.1.1-0569c74.
### Removed
- Removed the enum utils class due to ANY_PACKAGE deprecation warnings in Unreal Engine 5.1.
- Support for older versions of the Engine (namely, 4.22, 4.23, 4.24, 4.25, and 4.26) has been dropped.
## [1.0.4] - 2022-12-02
This is a minor release focusing mostly on adherence to the Unreal Engine Marketplace Guidelines based on the feedback from Epic Games.
+1 -1
View File
@@ -5,7 +5,7 @@ The SenseGlove plug-in for Unreal Engine is licensed under the terms of the MIT
```
MIT License
Copyright (c) 2020 - 2022 SenseGlove
Copyright (c) 2020 - 2023 SenseGlove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+13 -36
View File
@@ -6,20 +6,21 @@ This repository relies on Git LFS for storing binary blobs (e.g. third-party lib
## Platform Support Matrix
| | **Windows<br>(MSVC 2017)** | **Windows<br>(MSVC 2019)** | **Windows<br>(MSVC 2022)** | **Linux<br>(Native Toolchain)** | **macOS** | **Oculus Mobile<br>(Android NDK r21b)** |
|----------|:--------------------------:|:--------------------------:|:--------------------------:|:-------------------------------:|:---------:|:---------------------------------------:|
| **4.22** | | | | | ❌ | |
| **4.23** | | | | | ❌ | |
| **4.24** | | | | | ❌ | |
| **4.25** | | | | | ❌ | |
| **4.26** | | | | | ❌ | |
| **4.27** | | | | | ❌ | |
| **5.0** | | | | | ❌ | |
| **5.1** | | | | | ❌ | |
| | **Windows (MSVC 2017)** | **Windows (MSVC 2019)** | **Windows (MSVC 2022)** | **Linux (Native Toolchain)** | **macOS** | **Oculus Mobile (Android NDK r21b)** |
|------|:-----------------------:|:-----------------------:|:-----------------------:|:----------------------------:|:---------:|:------------------------------------:|
| 4.22 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.23 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.24 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.25 | ⚠️ v1.0.x | ⚠️ v1.0.x | | ⚠️ v1.0.x | ❌ | |
| 4.26 | ⚠️ v1.0.x | ⚠️ v1.0.x | | ⚠️ v1.0.x | ❌ | |
| 4.27 | ✅ v1.1.x |v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ❌ | ✅ v1.1.x |
| 5.0 | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ❌ | ✅ v1.1.x |
| 5.1 | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ❌ | ✅ v1.1.x |
* <code>✅</code> Supported
* <code></code> Not Supported
* <code></code> Unknown or Untested
* <code>⚠️</code> Not supported by the latest release and might be lacking features
* <code></code> Not supported at all
* <code>❓</code> Unknown or untested
Remarks:
* Microsoft Visual Studio 2022 is not supported by Unreal Engine 4.22 through 4.26.
@@ -105,30 +106,6 @@ Source
├── 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
+25 -1
View File
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0.4",
"VersionName": "1.1.0",
"FriendlyName": "SenseGlove",
"Description": "Integrating the SenseGlove haptic controller into Unreal Engine",
"Category": "Virtual Reality",
@@ -15,6 +15,7 @@
"IsExperimentalVersion": false,
"Installed": false,
"SupportedTargetPlatforms": [
"Android",
"Linux",
"Win64"
],
@@ -24,6 +25,17 @@
"Type": "Runtime",
"LoadingPhase": "Default",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
},
{
"Name": "SenseGloveAndroid",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -33,6 +45,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -42,6 +55,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -51,6 +65,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -60,6 +75,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -69,6 +85,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -78,6 +95,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -87,6 +105,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -105,6 +124,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -114,6 +134,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -123,6 +144,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -132,6 +154,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
@@ -141,6 +164,7 @@
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
+1 -1
View File
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
+1 -1
View File
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
+1 -1
View File
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
+1 -1
View File
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,120 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SGAndroid/SGConnectJNI.h"
#if PLATFORM_ANDROID
#include "Android/AndroidApplication.h"
#include "Android/AndroidJava.h"
#endif /* PLATFORM_ANDROID */
#if PLATFORM_ANDROID
#include "SGConnectImpl/SGExportedFunctions.h"
#include "SGInterop/SGIC_jclass.h"
#include "SGInterop/SGIC_jmethodID.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
#endif /* PLATFORM_ANDROID */
int32 FSGConnectJNI::Initialize()
{
int32 Result = -999999;
#if PLATFORM_ANDROID
static constexpr char SGCONNECT_JAVA_CLASS_NAME[] = "com.senseglove.sgconnect.SGConnect";
SGLOG("FSGCoreJNI: attempting to get the Android JNI environment...");
JNIEnv* Env = FAndroidApplication::GetJavaEnv();
FAndroidApplication::CheckJavaException();
if (!Env)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI environmnet!");
return -1999999;
}
FSGIC_JNIEnv_Ptr InEnvContainer{Env};
SGLOG("FSGCoreJNI: attempting to find the Android Java class...");
jclass Class = FAndroidApplication::FindJavaClass(SGCONNECT_JAVA_CLASS_NAME);
FAndroidApplication::CheckJavaException();
if (Env->IsSameObject(Class, nullptr))
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android Java class!");
return -2999999;
}
Class = (jclass)Env->NewGlobalRef(Class);
FSGIC_jclass InClassContainer{Class};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'Init'...");
jmethodID InitMethodID = Env->GetStaticMethodID(Class, "Init", "()I");
FAndroidApplication::CheckJavaException();
if (!InitMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'Init'!");
return -3999999;
}
FSGIC_jmethodID InInitMethodIDContainer{InitMethodID};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'Dispose'...");
jmethodID DisposeMethodID = Env->GetStaticMethodID(Class, "Dispose", "()I");
FAndroidApplication::CheckJavaException();
if (!DisposeMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'Dispose'!");
return -4999999;
}
FSGIC_jmethodID InDisposeMethodIDContainer{DisposeMethodID};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'GetLibraryVersion'...");
jmethodID GetLibraryVersionMethodID = Env->GetStaticMethodID(Class, "GetLibraryVersion", "()Ljava/lang/String;");
FAndroidApplication::CheckJavaException();
if (!GetLibraryVersionMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'GetLibraryVersion'!");
return -5999999;
}
FSGIC_jmethodID InGetLibraryVersionMethodIDContainer{GetLibraryVersionMethodID};
Result = SGConnectImpl_Android_Initialize(&InEnvContainer, &InClassContainer,
&InInitMethodIDContainer,
&InDisposeMethodIDContainer,
&InGetLibraryVersionMethodIDContainer);
#endif /* PLATFORM_ANDROID */
return Result;
}
@@ -0,0 +1,134 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SGAndroid/SGCoreJNI.h"
#if PLATFORM_ANDROID
#include "Android/AndroidApplication.h"
#include "Android/AndroidJava.h"
#endif /* PLATFORM_ANDROID */
#if PLATFORM_ANDROID
#include "SGCoreImpl/SGExportedFunctions.h"
#include "SGInterop/SGIC_jclass.h"
#include "SGInterop/SGIC_jmethodID.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
#endif /* PLATFORM_ANDROID */
#include "SGLog/SGLog.h"
int32 FSGCoreJNI::Initialize()
{
int32 Result = -999999;
#if PLATFORM_ANDROID
static constexpr char SGCONNECT_JAVA_CLASS_NAME[] = "com.senseglove.sgconnect.SGConnect";
SGLOG("FSGCoreJNI: attempting to get the Android JNI environment...");
JNIEnv* Env = FAndroidApplication::GetJavaEnv();
FAndroidApplication::CheckJavaException();
if (!Env)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI environmnet!");
return -1999999;
}
FSGIC_JNIEnv_Ptr InEnvContainer{Env};
SGLOG("FSGCoreJNI: attempting to find the Android Java class...");
jclass Class = FAndroidApplication::FindJavaClass(SGCONNECT_JAVA_CLASS_NAME);
FAndroidApplication::CheckJavaException();
if (Env->IsSameObject(Class, nullptr))
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android Java class!");
return -2999999;
}
Class = (jclass)Env->NewGlobalRef(Class);
FSGIC_jclass InClassContainer{Class};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'ActiveDevices'...");
jmethodID ActiveDevicesMethodID = Env->GetStaticMethodID(Class, "ActiveDevices", "()I");
FAndroidApplication::CheckJavaException();
if (!ActiveDevicesMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'ActiveDevices'!");
return -3999999;
}
FSGIC_jmethodID InActiveDevicesMethodIDContainer{ActiveDevicesMethodID};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'GetDeviceString'...");
jmethodID GetDeviceStringMethodID = Env->GetStaticMethodID(Class, "GetDeviceString", "(I)Ljava/lang/String;");
FAndroidApplication::CheckJavaException();
if (!GetDeviceStringMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'GetDeviceString'!");
return -4999999;
}
FSGIC_jmethodID InGetDeviceStringMethodIDContainer{GetDeviceStringMethodID};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'GetSensorString'...");
jmethodID GetSensorStringMethodID = Env->GetStaticMethodID(Class, "GetSensorString", "(I)Ljava/lang/String;");
FAndroidApplication::CheckJavaException();
if (!GetSensorStringMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'GetSensorString'!");
return -5999999;
}
FSGIC_jmethodID InGetSensorStringMethodIDContainer{GetSensorStringMethodID};
SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'WriteHaptics'...");
jmethodID WriteHapticsMethodID = Env->GetStaticMethodID(Class, "WriteHaptics", "(ILjava/lang/String;)I");
FAndroidApplication::CheckJavaException();
if (!WriteHapticsMethodID)
{
SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'WriteHaptics'!");
return -6999999;
}
FSGIC_jmethodID InWriteHapticsMethodIDContainer{WriteHapticsMethodID};
Result = SGCoreImpl_Android_Initialize(&InEnvContainer, &InClassContainer,
&InActiveDevicesMethodIDContainer,
&InGetDeviceStringMethodIDContainer,
&InGetSensorStringMethodIDContainer,
&InWriteHapticsMethodIDContainer);
#endif /* PLATFORM_ANDROID */
return Result;
}
@@ -0,0 +1,41 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGloveAndroid.h"
#include "Modules/ModuleManager.h"
#include "SenseGloveAndroidModule.h"
IMPLEMENT_MODULE(FSenseGloveAndroidModule, SenseGloveAndroid)
@@ -0,0 +1,38 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "CoreMinimal.h"
@@ -0,0 +1,75 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGloveAndroidModule.h"
#include "SGAndroid/SGConnectJNI.h"
#include "SGAndroid/SGCoreJNI.h"
#include "SGLog/SGLog.h"
#define LOCTEXT_NAMESPACE "FSenseGloveAndroidModule"
void FSenseGloveAndroidModule::StartupModule()
{
SGLOG("Starting up SenseGloveAndroid module...");
#if PLATFORM_ANDROID
const int32 R1 = FSGConnectJNI::Initialize();
const int32 R2 = FSGCoreJNI::Initialize();
ensureAlwaysMsgf(R1 == 0,
TEXT("Failed to initialize the SGConnect JNI bridge to SGConnect for Android! Status Code: %d"), R1);
ensureAlwaysMsgf(R2 == 0,
TEXT("Failed to initialize the SGCore JNI bridge to SGConnect for Android! Status Code: %d"), R2);
#endif /* PLATFORM_ANDROID */
}
void FSenseGloveAndroidModule::PreUnloadCallback()
{
SGLOG("Unloading SenseGloveAndroid module...");
}
void FSenseGloveAndroidModule::PostLoadCallback()
{
SGLOG("Loading SenseGloveAndroid module has succeeded!");
}
void FSenseGloveAndroidModule::ShutdownModule()
{
SGLOG("Shutting down SenseGloveAndroid module...");
}
#undef LOCTEXT_NAMESPACE
@@ -0,0 +1,51 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "Modules/ModuleInterface.h"
#define LOCTEXT_NAMESPACE "SenseGloveAndroid"
class FSenseGloveAndroidModule : public IModuleInterface
{
public:
virtual void StartupModule() override;
virtual void PreUnloadCallback() override;
virtual void PostLoadCallback() override;
virtual void ShutdownModule() override;
};
#undef LOCTEXT_NAMESPACE
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -35,34 +35,15 @@
#pragma once
#include "Containers/UnrealString.h"
#include "Misc/AssertionMacros.h"
#include "Templates/UnrealTemplate.h"
#include "UObject/Class.h"
#include "UObject/Object.h"
#include "UObject/Package.h"
#include "UObject/ObjectMacros.h"
class SENSEGLOVEUTILS_API SGEnumUtils
{
public:
template<typename E>
static FORCEINLINE FString ValueToName(const FString& Enum, const E Value)
{
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, *Enum, true);
if (!ensureAlwaysMsgf(EnumPtr, TEXT("No such enum exists!"))) {
return FString("None");
}
return EnumPtr->GetNameByValue(StaticCast<int64>(Value)).ToString();
}
#include "SGConnectJNI.generated.h"
template <typename E>
static FORCEINLINE E NameToValue(const FString& Enum, const FString& Name)
{
UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, *Enum, true);
if (!ensureAlwaysMsgf(EnumPtr, TEXT("No such enum exists!"))) {
return StaticCast<E>(0);
}
return StaticCast<E>(EnumPtr->GetValueByName(FName(*Name)));
}
USTRUCT()
struct SENSEGLOVEANDROID_API FSGConnectJNI
{
GENERATED_BODY()
public:
static int32 Initialize();
};
@@ -0,0 +1,49 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "UObject/ObjectMacros.h"
#include "SGCoreJNI.generated.h"
USTRUCT()
struct SENSEGLOVEANDROID_API FSGCoreJNI
{
GENERATED_BODY()
public:
static int32 Initialize();
};
@@ -0,0 +1,78 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
using System;
using System.IO;
using UnrealBuildTool;
public class SenseGloveAndroid : ModuleRules
{
public SenseGloveAndroid(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"SenseGloveConnectImpl",
"SenseGloveCoreImpl",
"SenseGloveInterop",
"SenseGloveLog",
}
);
if (Target.Platform == UnrealTargetPlatform.Android)
{
PrivateDependencyModuleNames.AddRange(
new string[]
{
"Launch",
"Settings",
}
);
AdditionalPropertiesForReceipt.Add("AndroidPlugin", Path.Combine(ModuleDirectory, "SenseGloveAndroid_UPL.xml"));
}
}
}
@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
@author Mamadou Babaei <mamadou@senseglove.com>
@section LICENSE
(The MIT License)
Copyright (c) 2020 - 2023 SenseGlove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->
<!-- https://docs.unrealengine.com/en-US/SharingAndReleasing/Mobile/UnrealPluginLanguage/index.html -->
<root xmlns:android="http://schemas.android.com/apk/res/android">
<init>
<log text="SenseGloveAndroid [INIT]: adding properties to the manifest and Gradle"/>
<trace enable="true"/>
<setBool result="bSupportedArch" value="false"/>
<isArch arch="armeabi-v7a">
<setBool result="bSupportedArch" value="false"/>
</isArch>
<isArch arch="arm64-v8a">
<setBool result="bSupportedArch" value="true"/>
</isArch>
<isArch arch="x86">
<setBool result="bSupportedArch" value="false"/>
</isArch>
<isArch arch="x86_64">
<setBool result="bSupportedArch" value="false"/>
</isArch>
<if condition="bSupportedArch">
<false>
<log text="SenseGloveAndroid [WARN]: this architecture is not supported!"/>
</false>
</if>
</init>
<!--
<prebuildCopies>
<copyDir src="$S(PluginDir)/Private/Java" dst="$S(BuildDir)/src/com/senseglove/sgconnect" />
</prebuildCopies>
-->
<resourceCopies>
<isArch arch="arm64-v8a">
<if condition="Distribution">
<true>
<!--
<copyFile src="$S(PluginDir)/ThirdParty/lib/oculus/release/somelib.so"
dst="$S(BuildDir)/libs/$S(Architecture)/somelib.so" />
-->
</true>
<false>
<!--
<copyFile src="$S(PluginDir)/ThirdParty/lib/oculus/debug/somelib.so"
dst="$S(BuildDir)/libs/$S(Architecture)/somelib.so" />
-->
</false>
</if>
</isArch>
<copyFile src="$S(PluginDir)/../ThirdParty/android/sgconnect.jar" dst="$S(BuildDir)/gradle/app/libs/sgconnect.jar" />
</resourceCopies>
<gradleProperties>
<insert>
<!--android.useAndroidX=true
android.enableJetifier=true-->
kapt.incremental.apt=true
</insert>
</gradleProperties>
<proguardAdditions>
<insert>
<!-- Disable obfuscation for SenseGlove classes -->
-dontwarn com.senseglove.**
-keep class com.senseglove.** { *; }
-keep interface com.senseglove.** { *; }
-keep public class com.senseglove.sgconnect.** { public protected *; }
<!-- Disable obfuscation for AndroidX classes -->
<!---dontwarn androidx.**
-keep class androidx.** { *; }
-keep interface androidx.** { *; }-->
</insert>
</proguardAdditions>
<soLoadLibrary>
<!--
<loadLibrary name="somelib" failmsg="SenseGlove [WARN]: somelib.so library failed to load!" />
-->
</soLoadLibrary>
<androidManifestUpdates>
<!-- For target SDK 31 update the SplashActivity activity -->
<loopElements tag="activity">
<setStringFromAttribute result="activityName" tag="$" name="android:name"/>
<setBoolIsEqual result="bSplashActivity" arg1="$S(activityName)" arg2="com.epicgames.ue4.SplashActivity"/>
<if condition="bSplashActivity">
<true>
<addAttribute tag="$" name="android:exported" value="true"/>
</true>
</if>
</loopElements>
<addElements tag="application">
<!--
<addAttribute tag="application" name="android:requestSomeThingHere" value="true"/>
-->
</addElements>
<addPermission android:name="android.permission.BLUETOOTH"/>
<addPermission android:name="android.permission.BLUETOOTH_ADMIN"/>
<addPermission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<addPermission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</androidManifestUpdates>
<!--
<AARImports>
<insertValue value="repository $S(PluginDir)/../../ThirdParty/android"/>
<insertNewline/>
<insertValue value="com.senseglove.sgconnect,sgconnect-android,release" />
<insertNewline/>
</AARImports>
-->
<buildGradleAdditions>
<insert>
ext {
android {
buildTypes {
release {
minifyEnabled false
}
}
}
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
implementation files('libs/sgconnect.jar')
}
</insert>
</buildGradleAdditions>
<baseBuildGradleAdditions>
<insert>
allprojects {
def mappings = [
]
beforeEvaluate {
}
}
</insert>
</baseBuildGradleAdditions>
<buildscriptGradleAdditions>
</buildscriptGradleAdditions>
<gradleCopies>
</gradleCopies>
<buildXmlPropertyAdditions>
</buildXmlPropertyAdditions>
<minimumSDKAPI>
</minimumSDKAPI>
<gameActivityImportAdditions>
<insert>
import com.senseglove.*;
</insert>
</gameActivityImportAdditions>
</root>
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,36 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SGBuildHacks/SGInclude_Connect_Android.h"
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,36 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SGBuildHacks/SGInclude_Core_Android.h"
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,44 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "HAL/Platform.h"
#include "SGBuildHacks/SGUndef_TEXT.h"
THIRD_PARTY_INCLUDES_START
#include "SenseGlove/Connect/Android.hpp"
THIRD_PARTY_INCLUDES_END
#include "SGBuildHacks/SGRestore_TEXT.h"
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,44 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "HAL/Platform.h"
#include "SGBuildHacks/SGUndef_TEXT.h"
THIRD_PARTY_INCLUDES_START
#include "SenseGlove/Core/Android.hpp"
THIRD_PARTY_INCLUDES_END
#include "SGBuildHacks/SGRestore_TEXT.h"
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -7,7 +7,7 @@
*
* (The MIT License)
*
* Copyright (c) 2020 - 2022 SenseGlove
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal

Some files were not shown because too many files have changed in this diff Show More