bump sgconnect and sgcore to v2.1.0-9080621 and add an almost functional android implementation

This commit is contained in:
Mamadou Babaei
2023-02-03 13:44:44 +01:00
parent bb91a0ad29
commit e9460a772d
27 changed files with 600 additions and 62 deletions
@@ -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,138 @@
/**
* @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'...");
// FIXME
// Trying to find WriteHaptics causes crash in the C++ core libraries
// Temporarily we pass another method instead
//jmethodID WriteHapticsMethodID = Env->GetStaticMethodID(Class, "WriteHaptics", "(ILjava/lang/String;)I");
jmethodID WriteHapticsMethodID = Env->GetStaticMethodID(Class, "GetSensorString", "(I)Ljava/lang/String;");
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;
}
@@ -35,17 +35,8 @@
#include "SenseGloveAndroidModule.h"
#if PLATFORM_ANDROID
#include "Android/AndroidApplication.h"
#include "Android/AndroidJava.h"
#endif /* PLATFORM_ANDROID */
#if PLATFORM_ANDROID
#include "SGConnectImpl/SGExportedFunctions.h"
#include "SGCoreImpl/SGExportedFunctions.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
#endif /* PLATFORM_ANDROID */
#include "SGAndroid/SGConnectJNI.h"
#include "SGAndroid/SGCoreJNI.h"
#include "SGLog/SGLog.h"
#define LOCTEXT_NAMESPACE "FSenseGloveAndroidModule"
@@ -55,29 +46,14 @@ void FSenseGloveAndroidModule::StartupModule()
SGLOG("Starting up SenseGloveAndroid module...");
#if PLATFORM_ANDROID
JNIEnv* Env = FAndroidApplication::GetJavaEnv();
if (!Env)
{
SGLOG_ERROR("Failed to get the Android JNI environmnet!");
return;
}
const int32 R1 = FSGConnectJNI::Initialize();
const int32 R2 = FSGCoreJNI::Initialize();
FSGIC_JNIEnv_Ptr EnvContainer{Env};
ensureAlwaysMsgf(R1 == 0,
TEXT("Failed to initialize the SGConnect JNI bridge to SGConnect for Android! Status Code: %d"), R1);
/*ensureAlwaysMsgf(SGConnectImpl_Android_Initialize(&EnvContainer),
TEXT("Failed to initialize the SGConnect JNI bridge to SGConnect for Android!"));
ensureAlwaysMsgf(SGCoreImpl_Android_Initialize(&EnvContainer),
TEXT("Failed to initialize the SGCore JNI bridge to SGConnect for Android!"));*/
const int32 r1 = SGConnectImpl_Android_Initialize(&EnvContainer);
const int32 r2 = SGCoreImpl_Android_Initialize(&EnvContainer);
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"), r1);
ensureAlwaysMsgf(R2 == 0,
TEXT("Failed to initialize the SGCore JNI bridge to SGConnect for Android! Status Code: %d"), R2);
#endif /* PLATFORM_ANDROID */
}
@@ -88,7 +64,7 @@ void FSenseGloveAndroidModule::PreUnloadCallback()
void FSenseGloveAndroidModule::PostLoadCallback()
{
SGLOG("Loading of SenseGloveAndroid module has succeeded!");
SGLOG("Loading SenseGloveAndroid module has succeeded!");
}
void FSenseGloveAndroidModule::ShutdownModule()
@@ -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 "SGConnectJNI.generated.h"
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();
};
@@ -43,16 +43,31 @@
#include "SGConnectImpl/SGConnectImpl.h"
#include "SGInterop/SGIC_FString.h"
#if PLATFORM_ANDROID
#include "SGInterop/SGIC_jclass.h"
#include "SGInterop/SGIC_jmethodID.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
#endif /* PLATFORM_ANDROID */
/*******************************************************************************
* Exceptional function calls
******************************************************************************/
#if PLATFORM_ANDROID
int32 SGConnectImpl_Android_Initialize(void* Env)
int32 SGConnectImpl_Android_Initialize(
void* InEnv,
void* InClass,
void* InInitMethodID,
void* InDisposeMethodID,
void* InGetLibraryVersionMethodID)
{
return SGConnect::Android::Initialize(StaticCast<FSGIC_JNIEnv_Ptr*>(Env)->Ptr);
return SGConnect::Android::Initialize(
StaticCast<FSGIC_JNIEnv_Ptr*>(InEnv)->Ptr,
StaticCast<FSGIC_jclass*>(InClass)->Class,
StaticCast<FSGIC_jmethodID*>(InInitMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InDisposeMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InGetLibraryVersionMethodID)->MethodID);
}
#endif /* PLATFORM_ANDROID */
@@ -69,7 +69,12 @@ extern "C" {
******************************************************************************/
#if PLATFORM_ANDROID
SENSEGLOVECONNECTIMPL_PUBLIC_API int32 SGConnectImpl_Android_Initialize(void* Env);
SENSEGLOVECONNECTIMPL_PUBLIC_API int32 SGConnectImpl_Android_Initialize(
void* InEnv,
void* InClass,
void* InInitMethodID,
void* InDisposeMethodID,
void* InGetLibraryVersionMethodID);
#endif /* PLATFORM_ANDROID */
/*******************************************************************************
@@ -107,7 +107,13 @@
#include "SGInterop/SGIC_FString.h"
#include "SGInterop/SGIC_FVector.h"
#include "SGInterop/SGIC_int32_Ref.h"
#if PLATFORM_ANDROID
#include "SGInterop/SGIC_jclass.h"
#include "SGInterop/SGIC_jmethodID.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
#endif /* PLATFORM_ANDROID */
#include "SGInterop/SGIC_TArray_bool.h"
#include "SGInterop/SGIC_TArray_FSGCalibrationDataPointImpl.h"
#include "SGInterop/SGIC_TArray_float.h"
@@ -142,9 +148,21 @@
******************************************************************************/
#if PLATFORM_ANDROID
int32 SGCoreImpl_Android_Initialize(void* Env)
int32 SGCoreImpl_Android_Initialize(
void* InEnv,
void* InClass,
void* InActiveDevicesMethodID,
void* InGetDeviceStringMethodID,
void* InGetSensorStringMethodID,
void* InWriteHapticsMethodID)
{
return SGCore::Android::Initialize(StaticCast<FSGIC_JNIEnv_Ptr*>(Env)->Ptr);
return SGCore::Android::Initialize(
StaticCast<FSGIC_JNIEnv_Ptr*>(InEnv)->Ptr,
StaticCast<FSGIC_jclass*>(InClass)->Class,
StaticCast<FSGIC_jmethodID*>(InActiveDevicesMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InGetDeviceStringMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InGetSensorStringMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InWriteHapticsMethodID)->MethodID);
}
#endif /* PLATFORM_ANDROID */
@@ -69,7 +69,13 @@ extern "C" {
******************************************************************************/
#if PLATFORM_ANDROID
SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_Android_Initialize(void* Env);
SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_Android_Initialize(
void* InEnv,
void* InClass,
void* InActiveDevicesMethodID,
void* InGetDeviceStringMethodID,
void* InGetSensorStringMethodID,
void* InWriteHapticsMethodID);
#endif /* PLATFORM_ANDROID */
/*******************************************************************************
@@ -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 "SGInterop/SGIC_jclass.h"
@@ -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 "SGInterop/SGIC_jmethodID.h"
@@ -0,0 +1,45 @@
/**
* @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
#if PLATFORM_ANDROID
#include "Android/AndroidJavaEnv.h"
struct FSGIC_jclass
{
jclass Class;
};
#endif /* PLATFORM_ANDROID */
@@ -0,0 +1,45 @@
/**
* @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
#if PLATFORM_ANDROID
#include "Android/AndroidJavaEnv.h"
struct FSGIC_jmethodID
{
jmethodID MethodID;
};
#endif /* PLATFORM_ANDROID */
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.