// Copyright Epic Games, Inc. All Rights Reserved.

using System.IO;
using UnrealBuildTool;

public class EmoShapeSubSystem : ModuleRules
{
	private string ThirdPartyPath
	{
		get { return Path.GetFullPath(Path.Combine(ModuleDirectory, "../ThirdParty/")); }
	}
	
	public EmoShapeSubSystem(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
		// bUseRTTI = true;
		bEnableExceptions = true;
		CppStandard = CppStandardVersion.Cpp17;
		
		PublicIncludePaths.AddRange(
			new string[] {
				// ... add public include paths required here ...
			}
			);
				
		
		PrivateIncludePaths.AddRange(
			new string[] {
				Path.Combine(ModuleDirectory, "Private"),
				Path.Combine(ModuleDirectory, "Private/internal"),
				Path.Combine(ThirdPartyPath, "websocketpp"),
				Path.Combine(ThirdPartyPath, "asio/asio/include"),
				Path.Combine(ThirdPartyPath, "rapidjson/include"),
				// ... add other private include paths required here ...
			}
			);
			
		
		PublicDependencyModuleNames.AddRange(
			new string[]
			{
				"Core",
                "CoreUObject",
                "Engine",
                "InputCore",
				"Networking",
				"HTTP",
				"ImageWrapper",
				"Json",
				"JsonUtilities",
				"Voice",
				"Sockets",
				"OnlineSubsystem",
				"OnlineSubsystemUtils",
				"OpusAudioDecoder"

				// ... add other public dependencies that you statically link with here ...
			}
			);
			
		
		PrivateDependencyModuleNames.AddRange(
			new string[]
			{
                "Core",
				"CoreUObject",
				"Engine",
				"Slate",
				"SlateCore",
				"RHI",
				"RenderCore",
				"libOpus",
				"UEOgg",
				"OpenSSL",
				"RenderCore",
                "Json",
                "JsonUtilities",
				"OpusAudioDecoder"

				// ... add private dependencies that you statically link with here ...	
			}
			);
		
		
		DynamicallyLoadedModuleNames.AddRange(
			new string[]
			{
				// ... add any modules that your module loads dynamically here ...
			}
			);
		
		if (
			Target.Platform == UnrealTargetPlatform.Win64 ||
			Target.Platform == UnrealTargetPlatform.Mac ||
			Target.Platform == UnrealTargetPlatform.Linux ||
			Target.Platform == UnrealTargetPlatform.IOS
		)
		{
			PublicDefinitions.Add("SIO_TLS=1");
		}
	}
}
