// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. /*============================================================================= LinuxTargetPlatformModule.cpp: Implements the FAndroidTargetPlatformModule class. =============================================================================*/ #include "LinuxTargetPlatformPrivatePCH.h" #define LOCTEXT_NAMESPACE "FLinuxTargetPlatformModule" /** * Holds the target platform singleton. */ static ITargetPlatform* Singleton = NULL; /** * Module for the Android target platform. */ class FLinuxTargetPlatformModule : public ITargetPlatformModule { public: /** * Destructor. */ ~FLinuxTargetPlatformModule( ) { Singleton = NULL; } public: // Begin ITargetPlatformModule interface virtual ITargetPlatform* GetTargetPlatform( ) override { if (Singleton == NULL) { Singleton = new TLinuxTargetPlatform(); } return Singleton; } // End ITargetPlatformModule interface public: // Begin IModuleInterface interface virtual void StartupModule() override { TargetSettings = ConstructObject(ULinuxTargetSettings::StaticClass(), GetTransientPackage(), "LinuxTargetSettings", RF_Standalone); // We need to manually load the config properties here, as this module is loaded before the UObject system is setup to do this GConfig->GetArray(TEXT("/Script/LinuxTargetPlatform.LinuxTargetSettings"), TEXT("TargetedRHIs"), TargetSettings->TargetedRHIs, GEngineIni); TargetSettings->AddToRoot(); ISettingsModule* SettingsModule = ISettingsModule::Get(); if (SettingsModule != nullptr) { SettingsModule->RegisterSettings("Project", "Platforms", "Linux", LOCTEXT("TargetSettingsName", "Linux"), LOCTEXT("TargetSettingsDescription", "Settings for Linux target platform"), TargetSettings ); } } virtual void ShutdownModule() override { ISettingsModule* SettingsModule = ISettingsModule::Get(); if (SettingsModule != nullptr) { SettingsModule->UnregisterSettings("Project", "Platforms", "Linux"); } if (!GExitPurge) { // If we're in exit purge, this object has already been destroyed TargetSettings->RemoveFromRoot(); } else { TargetSettings = NULL; } } // End IModuleInterface interface private: // Holds the target settings. ULinuxTargetSettings* TargetSettings; }; #undef LOCTEXT_NAMESPACE IMPLEMENT_MODULE( FLinuxTargetPlatformModule, LinuxTargetPlatform);