add the FSGPluginUtils utility class for other plugins or modules availability detection such as Meta XR and ViveOpenXR
This commit is contained in:
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Added `FSGConnectJNI::Initialize()` and `FSGCoreJNI::Initialize()` return codes to Android logs for detailed debugging purposes through `adb logcat`.
|
||||
- Introduced the `Meta XR` plugin compatibility.
|
||||
- Introduced the `ViveOpenXR` plugin compatibility.
|
||||
- Added the `FSGPluginUtils` utility class for other plugins or modules availability detection such as `Meta XR` and `ViveOpenXR`.
|
||||
|
||||
### Fixed
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Mamadou Babaei <mamadou@senseglove.com>
|
||||
*
|
||||
* @section LICENSE
|
||||
*
|
||||
* (The MIT License)
|
||||
*
|
||||
* Copyright (c) 2020 - 2025 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 "SGUtils/SGPluginUtils.h"
|
||||
|
||||
#include "Interfaces/IPluginManager.h"
|
||||
#include "Modules/ModuleManager.h"
|
||||
|
||||
bool FSGPluginUtils::IsPluginEnabled(const FString& PluginName)
|
||||
{
|
||||
TSharedPtr<IPlugin> Plugin{IPluginManager::Get().FindPlugin(*PluginName)};
|
||||
if (Plugin.IsValid())
|
||||
{
|
||||
return Plugin->IsEnabled();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FSGPluginUtils::IsModuleLoaded(const FString& ModuleName)
|
||||
{
|
||||
return FModuleManager::Get().IsModuleLoaded(FName{*ModuleName});
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Mamadou Babaei <mamadou@senseglove.com>
|
||||
*
|
||||
* @section LICENSE
|
||||
*
|
||||
* (The MIT License)
|
||||
*
|
||||
* Copyright (c) 2020 - 2025 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
|
||||
|
||||
class SENSEGLOVEUTILS_API FSGPluginUtils final
|
||||
{
|
||||
public:
|
||||
static bool IsPluginEnabled(const FString& PluginName);
|
||||
static bool IsModuleLoaded(const FString& ModuleName);
|
||||
|
||||
static FORCENOINLINE bool IsPluginAvailable(const FString& PluginName, const FString& ModuleName)
|
||||
{
|
||||
return IsPluginEnabled(*PluginName) && IsModuleLoaded(ModuleName);
|
||||
}
|
||||
|
||||
FORCENOINLINE static bool IsMetaXRPluginEnabled()
|
||||
{
|
||||
return IsPluginEnabled(TEXT("OculusXR"));
|
||||
}
|
||||
|
||||
FORCENOINLINE static bool IsMetaXRPluginLoaded()
|
||||
{
|
||||
return IsModuleLoaded(TEXT("OculusXRHMD"));
|
||||
}
|
||||
|
||||
FORCENOINLINE static bool IsMetaXRPluginAvailable()
|
||||
{
|
||||
return IsMetaXRPluginEnabled() && IsMetaXRPluginLoaded();
|
||||
}
|
||||
|
||||
FORCENOINLINE static bool IsViveOpenXRPluginEnabled()
|
||||
{
|
||||
return IsPluginEnabled(TEXT("ViveOpenXR"));
|
||||
}
|
||||
|
||||
FORCENOINLINE static bool IsViveOpenXRPluginLoaded()
|
||||
{
|
||||
return IsModuleLoaded(TEXT("ViveOpenXRCommon"));
|
||||
}
|
||||
|
||||
FORCENOINLINE static bool IsViveOpenXRPluginAvailable()
|
||||
{
|
||||
return IsViveOpenXRPluginEnabled() && IsViveOpenXRPluginLoaded();
|
||||
}
|
||||
|
||||
public:
|
||||
FSGPluginUtils() = delete;
|
||||
virtual ~FSGPluginUtils() = delete;
|
||||
};
|
||||
@@ -48,6 +48,7 @@ public class SenseGloveUtils : ModuleRules
|
||||
"Core",
|
||||
"CoreUObject",
|
||||
"Engine",
|
||||
"Projects",
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user