diff --git a/Code/CLIStandaloneServer/AssemblyInfo.cpp b/Code/CLIStandaloneServer/AssemblyInfo.cpp new file mode 100644 index 00000000..20a72bc0 --- /dev/null +++ b/Code/CLIStandaloneServer/AssemblyInfo.cpp @@ -0,0 +1,38 @@ +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute("PhysicsGameCLIWrapper")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("Microsoft")]; +[assembly:AssemblyProductAttribute("PhysicsGameCLIWrapper")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) Microsoft 2010")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/Code/CLIStandaloneServer/C++StandaloneCLI.cpp b/Code/CLIStandaloneServer/C++StandaloneCLI.cpp new file mode 100644 index 00000000..b331e37f --- /dev/null +++ b/Code/CLIStandaloneServer/C++StandaloneCLI.cpp @@ -0,0 +1,107 @@ +#include "C++StandaloneCLI.h" + +using namespace System; +using namespace System::Runtime::InteropServices; + +CppStandaloneCLI::CppStandaloneCLI() +{ +} + +CppStandaloneCLI::~CppStandaloneCLI() +{ +} + +DanBiasServerReturn CppStandaloneCLI::ServerInitiate(ServerInitDesc desc) +{ + DanBias::GameServerAPI::ServerInitDesc d; + //Convert from String to char* + IntPtr p = Marshal::StringToHGlobalAnsi(desc.serverName); + d.serverName = static_cast(p.ToPointer()); + Marshal::FreeHGlobal(p); + + d.listenPort = desc.listenPort; + d.broadcast = desc.broadcast; + + return (DanBiasServerReturn)DanBias::GameServerAPI::ServerInitiate(d); +} + +void CppStandaloneCLI::ServerStart() +{ + DanBias::GameServerAPI::ServerStart(); +} + +void CppStandaloneCLI::ServerStop() +{ + DanBias::GameServerAPI::ServerStop(); +} + +void CppStandaloneCLI::ServerUpdate() +{ + DanBias::GameServerAPI::ServerUpdate(); +} + +GameServerInfo CppStandaloneCLI::ServerGetInfo() +{ + GameServerInfo info; + + DanBias::GameServerAPI::GameServerInfo i = DanBias::GameServerAPI::ServerGetInfo(); + info.listenPort = i.listenPort; + info.serverIp = gcnew String(i.serverIp); + + return info; +} + +bool CppStandaloneCLI::ServerIsRunning() +{ + return DanBias::GameServerAPI::ServerIsRunning(); +} + +void CppStandaloneCLI::GameSetMapId(const int val) +{ + DanBias::GameServerAPI::GameSetMapId(val); +} + +void CppStandaloneCLI::GameSetMaxClients(const int val) +{ + DanBias::GameServerAPI::GameSetMaxClients(val); +} + +void CppStandaloneCLI::GameSetGameMode(const int val) +{ + DanBias::GameServerAPI::GameSetGameMode(val); +} + +void CppStandaloneCLI::GameSetGameTime(const int val) +{ + DanBias::GameServerAPI::GameSetGameTime(val); +} + +int CppStandaloneCLI::GameGetMapId() +{ + return DanBias::GameServerAPI::GameGetMapId(); +} + +int CppStandaloneCLI::GameGetMaxClients() +{ + return DanBias::GameServerAPI::GameGetMaxClients(); +} + +int CppStandaloneCLI::GameGetGameMode() +{ + return DanBias::GameServerAPI::GameGetGameMode(); +} + +int CppStandaloneCLI::GameGetGameTime() +{ + return DanBias::GameServerAPI::GameGetGameTime(); +} + +String^ CppStandaloneCLI::GameGetGameName() +{ + return gcnew String(DanBias::GameServerAPI::GameGetGameName()); +} + +bool CppStandaloneCLI::GameStart() +{ + return DanBias::GameServerAPI::GameStart(); +} \ No newline at end of file diff --git a/Code/CLIStandaloneServer/C++StandaloneCLI.h b/Code/CLIStandaloneServer/C++StandaloneCLI.h new file mode 100644 index 00000000..2e0d8530 --- /dev/null +++ b/Code/CLIStandaloneServer/C++StandaloneCLI.h @@ -0,0 +1,56 @@ +#ifndef CLISTANDALONESERVER_CPP_Standalone_CLI_H +#define CLISTANDALONESERVER_CPP_Standalone_CLI_H + +#include +#include +#include + +#include "..\Game\GameServer\GameServerAPI.h" + +enum DanBiasServerReturn +{ + DanBiasServerReturn_Error, + DanBiasServerReturn_Sucess, + DanBiasServerReturn_GameNotCreated, +}; + +public value struct ServerInitDesc +{ + System::String^ serverName; + int listenPort; + bool broadcast; //Not fully implemented! + +}; + +public value struct GameServerInfo +{ + unsigned int listenPort; // If set to 0, the default port 15151 will be used + System::String^ serverIp; // This cant be mofidfied.. +}; + +public ref class CppStandaloneCLI +{ +public: + CppStandaloneCLI(); + ~CppStandaloneCLI(); + + DanBiasServerReturn ServerInitiate(ServerInitDesc desc); + void ServerStart(); + void ServerStop(); + void ServerUpdate(); + GameServerInfo ServerGetInfo(); + bool ServerIsRunning(); + + void GameSetMapId(const int val); + void GameSetMaxClients(const int val); + void GameSetGameMode(const int val); + void GameSetGameTime(const int val); + int GameGetMapId(); + int GameGetMaxClients(); + int GameGetGameMode(); + int GameGetGameTime(); + System::String^ GameGetGameName(); + bool GameStart(); +}; + +#endif \ No newline at end of file diff --git a/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj new file mode 100644 index 00000000..6b49c390 --- /dev/null +++ b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj @@ -0,0 +1,160 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} + CLIStandaloneServer + + + + DynamicLibrary + true + v110 + Unicode + true + + + DynamicLibrary + true + v110 + Unicode + true + + + DynamicLibrary + false + v110 + true + Unicode + true + + + DynamicLibrary + false + v110 + true + Unicode + true + + + + + + + + + + + + + + + + + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName)D + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName) + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName)D + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName) + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + + Level3 + Disabled + true + + + true + Windows + + + + + Level3 + Disabled + true + + + true + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + {143bd516-20a1-4890-a3e4-f8bfd02220e7} + + + + + + \ No newline at end of file diff --git a/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user new file mode 100644 index 00000000..2e28d6f7 --- /dev/null +++ b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user @@ -0,0 +1,22 @@ + + + + true + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + \ No newline at end of file diff --git a/Code/DanBias.sln b/Code/DanBias.sln index 4d512dff..77bb2ca7 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -5,6 +5,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterGraphics", "OysterGra EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterMath", "OysterMath\OysterMath.vcxproj", "{F10CBC03-9809-4CBA-95D8-327C287B18EE}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterPhysics3D", "OysterPhysics3D\OysterPhysics3D.vcxproj", "{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sound", "Sound\Sound.vcxproj", "{34D6295A-00DD-4B1A-8258-97DA2818EC26}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowManager", "WindowManager\WindowManager.vcxproj", "{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Input", "Input\Input.vcxproj", "{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Misc", "Misc\Misc.vcxproj", "{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Network", "Network", "{C27B926E-B3EF-4990-8822-47580E43A0BE}" @@ -15,512 +23,622 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterNetworkServer", "Netw EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkDependencies", "Network\NetworkDependencies\NetworkDependencies.vcxproj", "{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tester", "Tester\Tester.vcxproj", "{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasGame", "Game\DanBiasGame\DanBiasGame.vcxproj", "{2A1BC987-AF42-4500-802D-89CD32FC1309}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasLauncher", "Game\DanBiasLauncher\DanBiasLauncher.vcxproj", "{8690FDDF-C5B7-4C42-A337-BD5243F29B85}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{20720CA7-795C-45AD-A302-9383A6DD503A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameLogic", "Game\GameLogic\GameLogic.vcxproj", "{B1195BB9-B3A5-47F0-906C-8DEA384D1520}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameProtocols\GameProtocols.vcxproj", "{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasLauncher", "Game\DanBiasLauncher\DanBiasLauncher.vcxproj", "{8690FDDF-C5B7-4C42-A337-BD5243F29B85}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkAPI", "Network\NetworkAPI\NetworkAPI.vcxproj", "{460D625F-2AC9-4559-B809-0BA89CEAEDF4}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameProtocols\GameProtocols.vcxproj", "{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Input", "Input\Input.vcxproj", "{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterPhysics3D", "OysterPhysics3D\OysterPhysics3D.vcxproj", "{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sound", "Sound\Sound.vcxproj", "{34D6295A-00DD-4B1A-8258-97DA2818EC26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowManager", "WindowManager\WindowManager.vcxproj", "{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLIStandaloneServer", "CLIStandaloneServer\CLIStandaloneServer.vcxproj", "{C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stand Alone Server", "Stand Alone Server", "{9CCCBB44-303F-44AE-B99C-4165AD894DBD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandAloneLauncher", "StandAloneLauncher\StandAloneLauncher.csproj", "{604A12A7-07BF-4482-BDF3-7101C811F121}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + MinSizeRel|Any CPU = MinSizeRel|Any CPU MinSizeRel|Mixed Platforms = MinSizeRel|Mixed Platforms MinSizeRel|Win32 = MinSizeRel|Win32 MinSizeRel|x64 = MinSizeRel|x64 + Release|Any CPU = Release|Any CPU Release|Mixed Platforms = Release|Mixed Platforms Release|Win32 = Release|Win32 Release|x64 = Release|x64 + RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU RelWithDebInfo|Mixed Platforms = RelWithDebInfo|Mixed Platforms RelWithDebInfo|Win32 = RelWithDebInfo|Win32 RelWithDebInfo|x64 = RelWithDebInfo|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Deploy.0 = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Debug|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.Build.0 = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Any CPU.ActiveCfg = Release|Win32 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|x64.Build.0 = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|x64.Build.0 = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Build.0 = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Deploy.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Debug|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Debug|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.Build.0 = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Any CPU.ActiveCfg = Release|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|x64.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Deploy.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Debug|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Debug|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Debug|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Debug|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Mixed Platforms.ActiveCfg = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Win32.ActiveCfg = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|x64.ActiveCfg = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.Build.0 = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.Build.0 = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.ActiveCfg = Debug|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.Build.0 = Debug|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.ActiveCfg = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.Build.0 = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.ActiveCfg = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.Build.0 = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.Build.0 = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.ActiveCfg = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.Build.0 = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.ActiveCfg = Debug|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.Build.0 = Debug|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.ActiveCfg = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.Build.0 = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.ActiveCfg = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.Build.0 = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.ActiveCfg = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.Build.0 = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.ActiveCfg = Debug|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.Build.0 = Debug|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.Build.0 = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.Build.0 = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.ActiveCfg = Debug|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.Build.0 = Debug|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.ActiveCfg = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.Build.0 = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.ActiveCfg = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.Build.0 = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.Build.0 = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.Build.0 = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.Build.0 = Release|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Any CPU.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.Build.0 = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.ActiveCfg = Debug|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.Build.0 = Debug|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Win32.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|x64.ActiveCfg = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|x64.Build.0 = Release|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Any CPU.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.ActiveCfg = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.Build.0 = Release|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|x64.Build.0 = Release|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Any CPU.ActiveCfg = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.ActiveCfg = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.Build.0 = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.ActiveCfg = Debug|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.Build.0 = Debug|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Win32.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|x64.ActiveCfg = Release|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|x64.Build.0 = Release|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Any CPU.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.ActiveCfg = Release|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.Build.0 = Release|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|x64.Build.0 = Release|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Any CPU.ActiveCfg = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.ActiveCfg = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.Build.0 = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.ActiveCfg = Debug|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.Build.0 = Debug|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|x64.Build.0 = Release|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Any CPU.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.Build.0 = Release|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.ActiveCfg = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Any CPU.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Debug|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Debug|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Any CPU.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Debug|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Debug|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Any CPU.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Debug|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Debug|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Any CPU.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Debug|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Debug|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Any CPU.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Any CPU.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.Build.0 = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.ActiveCfg = Debug|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.Build.0 = Debug|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.ActiveCfg = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Any CPU.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.ActiveCfg = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.ActiveCfg = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Any CPU.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.ActiveCfg = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.Build.0 = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.ActiveCfg = Debug|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.Build.0 = Debug|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.ActiveCfg = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Any CPU.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.ActiveCfg = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.ActiveCfg = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Any CPU.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.ActiveCfg = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Any CPU.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.ActiveCfg = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.Build.0 = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.ActiveCfg = Debug|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.Build.0 = Debug|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.ActiveCfg = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Any CPU.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.ActiveCfg = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.Build.0 = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.ActiveCfg = Debug|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.Build.0 = Debug|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.ActiveCfg = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Any CPU.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.ActiveCfg = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.ActiveCfg = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Any CPU.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Win32.Build.0 = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|x64.ActiveCfg = Debug|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|x64.Build.0 = Debug|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Win32.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|x64.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Any CPU.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.ActiveCfg = Release|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.Build.0 = Release|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Any CPU.Build.0 = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Win32.ActiveCfg = Debug|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Win32.Build.0 = Debug|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|x64.ActiveCfg = Debug|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|x64.Build.0 = Debug|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Mixed Platforms.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Win32.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Any CPU.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Any CPU.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Win32.ActiveCfg = Release|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Win32.Build.0 = Release|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|x64.ActiveCfg = Release|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|x64.Build.0 = Release|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Win32.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -530,12 +648,14 @@ Global {6A066806-F43F-4B31-A4E3-57179674F460} = {C27B926E-B3EF-4990-8822-47580E43A0BE} {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50} = {C27B926E-B3EF-4990-8822-47580E43A0BE} {460D625F-2AC9-4559-B809-0BA89CEAEDF4} = {C27B926E-B3EF-4990-8822-47580E43A0BE} - {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} - {2A1BC987-AF42-4500-802D-89CD32FC1309} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} - {8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} - {060B1890-CBF3-4808-BA99-A4776222093B} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} - {B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} - {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {2A1BC987-AF42-4500-802D-89CD32FC1309} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} + {604A12A7-07BF-4482-BDF3-7101C811F121} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} EndGlobalSection EndGlobal diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 5049b6e7..1f0bf1ce 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -79,7 +79,7 @@ $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D - $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Network/NetworkAPI;$(IncludePath);C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer\ @@ -95,7 +95,7 @@ $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) - $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Network/NetworkAPI;$(IncludePath);C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer\ @@ -195,7 +195,9 @@ + + @@ -209,16 +211,18 @@ + - + - + + @@ -231,10 +235,12 @@ - + + + diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index 3d601691..923e53fc 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -5,7 +5,8 @@ #include "GameClientState/GameClientState.h" #include "GameClientState\GameState.h" #include "GameClientState\LobbyState.h" -#include "GameClientState\LoginState.h" +#include "GameClientState\LobbyAdminState.h" +#include "GameClientState\MainState.h" #include "GameClientState\LanMenuState.h" #include #include "NetworkClient.h" @@ -15,43 +16,41 @@ #include "L_inputClass.h" #include "WinTimer.h" #include "vld.h" -#include "GameClientRecieverFunc.h" #include "../Misc/EventHandler/EventHandler.h" -using namespace Oyster::Event; + +using namespace ::Oyster; +using namespace ::Oyster::Event; +using namespace ::Oyster::Network; +using namespace ::Utility::DynamicMemory; + +void ClientEventFunction( NetEvent e ); namespace DanBias { - #pragma region Game Data - class DanBiasGamePrivateData { - public: - DanBiasGamePrivateData() - { - - } - ~DanBiasGamePrivateData() - { - - } - public: WindowShell* window; InputClass* inputObj; Utility::WinTimer timer; - GameRecieverObject* recieverObj; + UniquePointer state; + NetworkClient networkClient; bool serverOwner; + float capFrame; + + DanBiasGamePrivateData() + { + this->capFrame = 0; + } } data; + #pragma endregion - DanBiasGamePrivateData* DanBiasGame::m_data = new DanBiasGamePrivateData(); - float DanBiasGame::capFrame = 0; - //-------------------------------------------------------------------------------------- // Interface API functions //-------------------------------------------------------------------------------------- @@ -59,8 +58,8 @@ namespace DanBias { WindowShell::CreateConsoleWindow(); - if(! m_data->window->CreateWin(WindowShell::WINDOW_INIT_DESC(L"Window", cPOINT(1024, 768), cPOINT()))) - //if(! m_data->window->CreateWin(WindowShell::WINDOW_INIT_DESC())) + //if(! data.window->CreateWin(WindowShell::WINDOW_INIT_DESC(L"Window", cPOINT(1600, 900), cPOINT()))) + if(! data.window->CreateWin(WindowShell::WINDOW_INIT_DESC())) return DanBiasClientReturn_Error; if( FAILED( InitDirect3D() ) ) @@ -69,42 +68,50 @@ namespace DanBias if( FAILED( InitInput() ) ) return DanBiasClientReturn_Error; - m_data->recieverObj = new GameRecieverObject; - m_data->serverOwner = false; + data.serverOwner = false; - // Start in lobby state - m_data->recieverObj->gameClientState = new Client::LoginState(); - if(!m_data->recieverObj->gameClientState->Init(m_data->recieverObj)) + data.networkClient.SetMessagePump( ClientEventFunction ); + + // Start in main menu state + data.state = new Client::MainState(); + + if( !data.state->Init( &data.networkClient ) ) return DanBiasClientReturn_Error; - m_data->timer.reset(); - return DanBiasClientReturn_Sucess; + data.timer.reset(); + return DanBiasClientReturn_Success; } DanBiasClientReturn DanBiasGame::Run() { // Main message loop - while(m_data->window->Frame()) + while(data.window->Frame()) { - float dt = (float)m_data->timer.getElapsedSeconds(); - m_data->timer.reset(); + float dt = (float)data.timer.getElapsedSeconds(); + data.timer.reset(); - if(m_data->recieverObj->IsConnected()) - m_data->recieverObj->Update(); + Graphics::API::Update( dt ); + + if(data.networkClient.IsConnected()) + data.networkClient.Update(); - capFrame += dt; - if(capFrame > 0.03) + data.capFrame += dt; + if(data.capFrame > 0.03) { - Oyster::Graphics::API::Update(capFrame); - if(Update(capFrame) != S_OK) + switch( Update(dt) ) + { + case Result_continue: break; + case Result_quit: return DanBiasClientReturn_Success; + case Result_error: return DanBiasClientReturn_Error; + default: break; + } + if(Render() != S_OK) return DanBiasClientReturn_Error; - if(Render(capFrame) != S_OK) - return DanBiasClientReturn_Error; - capFrame = 0; + data.capFrame = 0; } } - return DanBiasClientReturn_Sucess; + return DanBiasClientReturn_Success; } void DanBiasGame::Release() @@ -117,11 +124,13 @@ namespace DanBias //-------------------------------------------------------------------------------------- HRESULT DanBiasGame::InitDirect3D() { + Oyster::Graphics::API::Option p; p.modelPath = L"..\\Content\\Models\\"; p.texturePath = L"..\\Content\\Textures\\"; Oyster::Graphics::API::SetOptions(p); - if(Oyster::Graphics::API::Init(m_data->window->GetHWND(), false, false, Oyster::Math::Float2( 1024, 768)) != Oyster::Graphics::API::Sucsess) + + if(Oyster::Graphics::API::Init(data.window->GetHWND(), false, false, Oyster::Math::Float2( 1024, 768)) != Oyster::Graphics::API::Sucsess) return E_FAIL; return S_OK; } @@ -131,8 +140,8 @@ namespace DanBias //------------------------------------------------------------------------------------- HRESULT DanBiasGame::InitInput() { - m_data->inputObj = new InputClass; - if(!m_data->inputObj->Initialize(m_data->window->GetHINSTANCE(), m_data->window->GetHWND(), m_data->window->GetWidth(), m_data->window->GetHeight())) + data.inputObj = new InputClass; + if(!data.inputObj->Initialize(data.window->GetHINSTANCE(), data.window->GetHWND(), data.window->GetHeight(), data.window->GetWidth())) { MessageBox(0, L"Could not initialize the input object.", L"Error", MB_OK); return E_FAIL; @@ -140,91 +149,85 @@ namespace DanBias return S_OK; } - HRESULT DanBiasGame::Update(float deltaTime) + DanBiasGame::Result DanBiasGame::Update(float deltaTime) { - //Get mouse pos and window size (Temporary) - POINT p; - RECT r; - GetCursorPos(&p); - ScreenToClient(WindowShell::GetHWND(), &p); - GetClientRect(WindowShell::GetHWND(), &r); + data.inputObj->Update(); - //Update menu buttons - MouseInput mouseInput; - mouseInput.x = (float)p.x / (float)r.right; - mouseInput.y = (float)p.y / (float)r.bottom; - mouseInput.mouseButtonPressed = m_data->inputObj->IsMousePressed(); - EventHandler::Instance().Update(mouseInput); - - m_data->inputObj->Update(); - - if(m_data->serverOwner) + if( data.serverOwner ) { DanBias::GameServerAPI::ServerUpdate(); } DanBias::Client::GameClientState::ClientState state = DanBias::Client::GameClientState::ClientState_Same; - state = m_data->recieverObj->gameClientState->Update(deltaTime, m_data->inputObj); - if(state != Client::GameClientState::ClientState_Same) + state = data.state->Update( deltaTime, data.inputObj ); + + if( state != Client::GameClientState::ClientState_Same ) { - bool stateVal = false; - m_data->recieverObj->gameClientState->Release(); - delete m_data->recieverObj->gameClientState; - m_data->recieverObj->gameClientState = NULL; + bool stateChanged = false; + data.state->Release(); switch (state) { - case Client::GameClientState::ClientState_LobbyCreated: - m_data->serverOwner = true; - stateVal = true; + case Client::GameClientState::ClientState_LobbyCreate: + data.state = new Client::LobbyAdminState(); + stateChanged = true; + break; + case Client::GameClientState::ClientState_Lan: + data.state = new Client::LanMenuState(); + stateChanged = true; + break; case Client::GameClientState::ClientState_Lobby: - m_data->recieverObj->gameClientState = new Client::LobbyState(); - stateVal = true; + data.state = new Client::LobbyState(); + stateChanged = true; break; case Client::GameClientState::ClientState_Game: - + data.state = new Client::GameState(); + stateChanged = true; break; + case Client::GameClientState::ClientState_Quit: + data.state->Release(); + return Result_quit; default: - return E_FAIL; - break; + data.state->Release(); + return Result_error; } - if(stateVal) + if( stateChanged ) { - m_data->recieverObj->gameClientState->Init(m_data->recieverObj); // send game client - } - else - { - - } - + data.state->Init( &data.networkClient ); // send game client + } } - return S_OK; + return Result_continue; } - HRESULT DanBiasGame::Render(float deltaTime) + HRESULT DanBiasGame::Render( ) { - m_data->recieverObj->gameClientState->Render(deltaTime); + data.state->Render(); + return S_OK; } HRESULT DanBiasGame::CleanUp() { - Oyster::Graphics::API::Clean(); + if( data.networkClient.IsConnected() ) + data.networkClient.Disconnect(); + + delete data.inputObj; + + data.state = nullptr; EventHandler::Instance().Clean(); + Graphics::API::Clean(); + GameServerAPI::ServerStop(); - m_data->recieverObj->gameClientState->Release(); - delete m_data->recieverObj->gameClientState; - m_data->recieverObj->Disconnect(); - delete m_data->recieverObj; - delete m_data->inputObj; - delete m_data; - - - return S_OK; } -} //End namespace DanBias \ No newline at end of file +} //End namespace DanBias + +void ClientEventFunction( NetEvent e ) +{ + if( DanBias::data.state ) + DanBias::data.state->DataRecieved( e ); +} diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 3ea449ec..673cbdd1 100644 --- a/Code/Game/DanBiasGame/GameClientRecieverFunc.h +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -4,20 +4,23 @@ //WTF!? No headers included??? #include "../DanBiasGame/Include/DanBiasGame.h" #include "../GameProtocols/GeneralProtocols.h" -#include "..\GameProtocols\Protocols.h" +#include "../GameProtocols/Protocols.h" +#include "../Network/NetworkAPI/NetworkClient.h" +#include "GameClientState\GameClientState.h" +#include "GameClientState\GameState.h" + #include namespace DanBias { - - struct GameRecieverObject :public Oyster::Network::NetworkClient + struct GameRecieverObject : public Oyster::Network::NetworkClient { Client::GameClientState* gameClientState; // receiver function for server messages // parsing protocols and sending it to the gameState //void NetworkCallback(Oyster::Network::CustomNetProtocol& p) override - void GameRecieverObject::DataRecieved(Oyster::Network::NetEvent e) override + void GameRecieverObject::DataRecieved( Oyster::Network::NetEvent e ) override { Oyster::Network::CustomNetProtocol p = e.args.data.protocol; int pType = p[0].value.netInt; @@ -70,14 +73,27 @@ namespace DanBias break; case protocol_Gameplay_ObjectPosition: { + // 0: reserved + // 1: objectID + // 2,3,4: position + // 5,6,7,8: rotation quaternion + + GameLogic::Protocol_ObjectPosition data(p); Client::GameClientState::ObjPos protocolData; - protocolData.object_ID = p[1].value.netInt; - for(int i = 0; i< 16; i++) + protocolData.object_ID = data.object_ID; + //protocolData.object_ID = p[1].value.netInt; + + for( int i = 0; i < 3; ++i ) { - protocolData.worldPos[i] = p[i+2].value.netFloat; + protocolData.position[i] = data.position[i]; } + //for(int i = 0; i< 16; i++) + //{ + // protocolData.worldPos[i] = p[i+2].value.netFloat; + //} + if(dynamic_cast(gameClientState)) ((Client::GameState*)gameClientState)->Protocol(&protocolData); } diff --git a/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h b/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h new file mode 100644 index 00000000..4333f1da --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h @@ -0,0 +1,202 @@ +/******************************************************************** + * Text field that allows multiple lines. + * + * Written by Dan Andersson, 2014 + ********************************************************************/ + +#ifndef DANBIAS_CLIENT_TEXT_FIELD_H +#define DANBIAS_CLIENT_TEXT_FIELD_H + +#include +#include +#include "ButtonRectangle.h" +#include "OysterMath.h" +#include "Utilities.h" + +namespace DanBias { namespace Client +{ + template + class TextField : public ButtonRectangle + { + public: + TextField(); + TextField( ::std::wstring backgroundTexture, ::Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height ); + virtual ~TextField(); + + virtual void RenderText(); + + const ::std::wstring & operator[]( unsigned int i ) const; + ::std::wstring & operator[]( unsigned int i ); + + void SetTextHeight( ::Oyster::Math::Float h ); + void SetLineSpacing( ::Oyster::Math::Float ls ); + + void SetBottomAligned(); + void SetTopAligned(); + + unsigned int GetNumLines() const; + unsigned int GetMaxLineLength() const; + + void ReserveLines( unsigned int num ); + void ClearText(); + void AppendText( const ::std::wstring &text ); + + void PopBack(); + void PopFront(); + + private: + bool isBottomAligned; + ::Oyster::Math::Float textHeight, lineSpacing; + ::std::vector<::std::wstring> lines; + }; + +// IMPLEMENTATIONS ////////////////////////////////////////////////// + + template + TextField::TextField() + : ButtonRectangle() + { + this->textHeight = 0.025f; + this->lineSpacing = 0.001f; + this->isBottomAligned = true; + } + + template + TextField::TextField( ::std::wstring backgroundTexture, ::Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize ) + : ButtonRectangle( backgroundTexture, L"", textColor, owner, pos, size, resize ) + { + this->textHeight = 0.025f; + this->lineSpacing = 0.001f; + this->isBottomAligned = true; + } + + template + TextField::~TextField() {} + + template + void TextField::RenderText() + { + ::Oyster::Math::Float lineStep = this->textHeight + this->lineSpacing; + ::Oyster::Math::Float2 rowSize = ::Oyster::Math::Float2( this->size.x, this->textHeight ); + + if( this->isBottomAligned ) + { + ::Oyster::Math::Float2 topLeft = this->pos; + topLeft.y += this->size.y - lineStep; + + auto line = this->lines.rbegin(); + for( ; line != this->lines.rend(); ++line ) + { + if( topLeft.y - lineStep >= this->pos.y ) + { + ::Oyster::Graphics::API::RenderText( (*line), topLeft, rowSize, this->textColor ); + topLeft.y -= lineStep; + } + else break; + } + } + else + { + ::Oyster::Math::Float2 topLeft = this->pos; + + auto line = this->lines.begin(); + for( ; line != this->lines.end(); ++line ) + { + if( topLeft.y + lineStep < this->size.y ) + { + ::Oyster::Graphics::API::RenderText( (*line), topLeft, rowSize, this->textColor ); + topLeft.y += lineStep; + } + else break; + } + } + } + + template + const ::std::wstring & TextField::operator[]( unsigned int i ) const + { + return this->lines[(::std::vector<::std::wstring>::size_type)i]; + } + + template + ::std::wstring & TextField::operator[]( unsigned int i ) + { + return this->lines[(::std::vector<::std::wstring>::size_type)i]; + } + + template + void TextField::SetTextHeight( ::Oyster::Math::Float h ) + { + this->textHeight = h; + } + + template + void TextField::SetLineSpacing( ::Oyster::Math::Float ls ) + { + this->lineSpacing = ls; + } + + template + void TextField::SetBottomAligned() + { + this->isBottomAligned = true; + } + + template + void TextField::SetTopAligned() + { + this->isBottomAligned = false; + } + + template + unsigned int TextField::GetNumLines() const + { + return (unsigned int)this->lines.size(); + } + + template + void TextField::ReserveLines( unsigned int num ) + { + this->lines.reserve( (::std::vector<::std::wstring>::size_type)num ); + } + + template + void TextField::ClearText() + { + this->lines.resize( 0 ); + } + + template + void TextField::AppendText( const ::std::wstring &text ) + { + ::std::vector<::std::wstring> split; + split.reserve( 10 ); + ::Utility::String::Split( split, text, L"\n", 0 ); + auto line = split.begin(); + for( ; line != split.end; ++line ) + { + this->lines.push_back( (*line) ); + } + } + + template + void TextField::PopBack() + { + this->lines.pop_back(); + } + + template + void TextField::PopFront() + { + ::std::vector<::std::wstring>::size_type i = 0, + n = this->lines.size() - 1; + for( ; i < n; ++i ) + { + this->lines[i] = this->lines[i+1]; + } + + this->lines.pop_back(); + } +} } + +#endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_Object.h b/Code/Game/DanBiasGame/GameClientState/C_Object.h index f926a08a..1b50b73d 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_Object.h +++ b/Code/Game/DanBiasGame/GameClientState/C_Object.h @@ -5,7 +5,6 @@ namespace DanBias { namespace Client { - struct ModelInitData { int id; @@ -16,36 +15,52 @@ namespace DanBias bool visible; }; -class C_Object -{ -private: - Oyster::Math::Float4x4 world; - Oyster::Math::Float3 position; - Oyster::Math::Quaternion rotation; - Oyster::Math::Float3 scale; - - int id; - void updateWorld(); -protected: - Oyster::Graphics::Model::Model *model; -public: + class C_Object + { + protected: + Oyster::Graphics::Model::Model *model; + private: + Oyster::Math::Float4x4 world; + Oyster::Math::Float3 position; + Oyster::Math::Quaternion rotation; + Oyster::Math::Float3 scale; + + int id; + void updateWorld(); + public: - virtual void Init(ModelInitData modelInit); + virtual void Init(ModelInitData modelInit); - void setWorld(Oyster::Math::Float4x4 world); - Oyster::Math::Float4x4 getWorld() const; - void setPos(Oyster::Math::Float3 newPos); - Oyster::Math::Float3 getPos() const; - void addPos(Oyster::Math::Float3 deltaPos); - void setRot(Oyster::Math::Quaternion newRot); - Oyster::Math::Quaternion getRotation() const; - void addRot(Oyster::Math::Quaternion deltaRot); - void setScale(Oyster::Math::Float3 newScale); - void addScale(Oyster::Math::Float3 deltaScale); - Oyster::Math::Float3 getScale() const; + void setWorld(Oyster::Math::Float4x4 world); + Oyster::Math::Float4x4 getWorld() const; + void setPos(Oyster::Math::Float3 newPos); + Oyster::Math::Float3 getPos() const; + void addPos(Oyster::Math::Float3 deltaPos); + void setRot(Oyster::Math::Quaternion newRot); + Oyster::Math::Quaternion getRotation() const; + void addRot(Oyster::Math::Quaternion deltaRot); + void setScale(Oyster::Math::Float3 newScale); + void addScale(Oyster::Math::Float3 deltaScale); + Oyster::Math::Float3 getScale() const; + + virtual void Render(); + virtual void Release(); + virtual int GetId() const; + }; + } +} + +namespace Utility { namespace DynamicMemory +{ // template specializationto allowuse of dynamicmemory tools + template<> + inline void SafeDeleteInstance( ::DanBias::Client::C_Object *dynamicInstance ) + { + if( dynamicInstance ) + { + dynamicInstance->Release(); + delete dynamicInstance; + } + } +} } - virtual void Render(); - virtual void Release(); - virtual int GetId() const; -};};}; #endif diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp index a75785a6..916a6d16 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp @@ -3,19 +3,14 @@ using namespace DanBias::Client; C_Player::C_Player(void) - :C_DynamicObj() -{ + :C_DynamicObj() {} -} - -C_Player::~C_Player(void) -{ - -} +C_Player::~C_Player(void) {} void C_Player::Init(ModelInitData modelInit) { C_Object::Init(modelInit); - Oyster::Graphics::API::PlayAnimation(model, L"movement"); + + Oyster::Graphics::API::PlayAnimation( this->model, L"movement" ); //Oyster::Graphics::API::Update(0.002f); } diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h index 9d7c3de0..e08d2589 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h @@ -5,13 +5,15 @@ namespace DanBias { namespace Client { -class C_Player : public C_DynamicObj -{ -private: -public: - C_Player(void); - virtual ~C_Player(void); - void Init(ModelInitData modelInit); + class C_Player : public C_DynamicObj + { + private: + public: + C_Player(void); + virtual ~C_Player(void); + void Init(ModelInitData modelInit); -};};}; + }; + } +} #endif diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp new file mode 100644 index 00000000..750cf2de --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp @@ -0,0 +1,125 @@ +#include "Camera_Basic.h" + +using namespace ::Oyster::Math3D; + +Camera_Basic::Camera_Basic() +{ + this->translation = this->angularAxis = Float3::null; + this->projection = Float4x4::identity; + this->rotation = Quaternion::identity; + rotationIsOutOfDate = false; +} + +Camera_Basic::Camera_Basic( const Float3 &position, const Float3 &angularAxis, const Float4x4 &projection ) +{ + this->translation = position; + this->angularAxis = angularAxis; + this->projection = projection; + this->rotation = Quaternion::identity; + rotationIsOutOfDate = true; +} + +Camera_Basic::~Camera_Basic() {} + +Camera_Basic & Camera_Basic::operator = ( const Camera_Basic &camera ) +{ + this->translation = camera.translation; + this->angularAxis = camera.angularAxis; + this->projection = camera.projection; + this->rotation = camera.rotation; + rotationIsOutOfDate = camera.rotationIsOutOfDate; + return *this; +} + +void Camera_Basic::SetPosition( const Float3 &translation ) +{ + this->translation = translation; +} + +void Camera_Basic::SetAngular( const Float3 &axis ) +{ + this->angularAxis = axis; + this->rotationIsOutOfDate = true; +} + +void Camera_Basic::SetProjection( const Float4x4 &matrix ) +{ + this->projection = matrix; +} + +void Camera_Basic::SetOrthographicProjection( Float width, Float height, Float nearClip, Float farClip ) +{ + ProjectionMatrix_Orthographic( width, height, nearClip, farClip, this->projection ); +} + +void Camera_Basic::SetPerspectiveProjection( Float verticalFoV, Float aspectRatio, Float nearClip, Float farClip ) +{ + ProjectionMatrix_Perspective( verticalFoV, aspectRatio, nearClip, farClip, this->projection ); +} + +void Camera_Basic::Move( const Float3 &deltaPosition ) +{ + this->translation += deltaPosition; +} + +void Camera_Basic::Rotate( const Float3 &deltaAngularAxis ) +{ + this->angularAxis += deltaAngularAxis; + this->rotationIsOutOfDate = true; +} + +const Float3 & Camera_Basic::GetPosition() const +{ + return this->translation; +} + +const Float3 & Camera_Basic::GetAngularAxis() const +{ + return this->angularAxis; +} + +Float3 Camera_Basic::GetNormalOf( const Float3 &axis ) const +{ + return WorldAxisOf( this->GetRotation(), axis ); +} + +const Quaternion & Camera_Basic::GetRotation() const +{ + if( this->rotationIsOutOfDate ) + { + // Maintain rotation resolution by keeping axis within [0, 2pi] (trigonometric methods gets faster too) + Float4 integer; + ::std::modf( this->angularAxis * (0.5f / pi), integer.xyz ); + this->angularAxis -= ((2.0f * pi) * integer).xyz; + + this->rotation = Rotation( this->angularAxis ); + this->rotationIsOutOfDate = false; + } + + return this->rotation; +} + +Float3x3 & Camera_Basic::GetRotationMatrix( Float3x3 &targetMem ) const +{ + return RotationMatrix( this->rotation, targetMem ); +} + +Float4x4 & Camera_Basic::GetRotationMatrix( Float4x4 &targetMem ) const +{ + return RotationMatrix( this->rotation, targetMem ); +} + +Float4x4 & Camera_Basic::GetViewMatrix( Float4x4 &targetMem ) const +{ + return ViewMatrix( this->GetRotation(), this->translation, targetMem ); +} + +const Float4x4 & Camera_Basic::GetProjectionMatrix() const +{ + return this->projection; +} + +Float4x4 & Camera_Basic::GetViewsProjMatrix( Float4x4 &targetMem ) const +{ + return TransformMatrix( this->projection, this->GetViewMatrix(), targetMem ); +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h new file mode 100644 index 00000000..c2a65e14 --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h @@ -0,0 +1,42 @@ +#ifndef CAMERA_BASIC_H +#define CAMERA_BASIC_H + +#include "OysterMath.h" + +class Camera_Basic +{ +public: + Camera_Basic(); + Camera_Basic( const ::Oyster::Math::Float3 &position, const ::Oyster::Math::Float3 &angularAxis, const ::Oyster::Math::Float4x4 &projection ); + virtual ~Camera_Basic(); + + Camera_Basic & operator = ( const Camera_Basic &camera ); + + void SetPosition( const ::Oyster::Math::Float3 &translation ); + void SetAngular( const ::Oyster::Math::Float3 &axis ); + void SetProjection( const ::Oyster::Math::Float4x4 &matrix ); + void SetOrthographicProjection( ::Oyster::Math::Float width, ::Oyster::Math::Float height, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + void SetPerspectiveProjection( ::Oyster::Math::Float verticalFoV, ::Oyster::Math::Float aspectRatio, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + + void Move( const ::Oyster::Math::Float3 &deltaPosition ); + void Rotate( const ::Oyster::Math::Float3 &deltaAngularAxis ); + + const ::Oyster::Math::Float3 & GetPosition() const; + const ::Oyster::Math::Float3 & GetAngularAxis() const; + ::Oyster::Math::Float3 GetNormalOf( const ::Oyster::Math::Float3 &axis ) const; + const ::Oyster::Math::Quaternion & GetRotation() const; + ::Oyster::Math::Float3x3 & GetRotationMatrix( ::Oyster::Math::Float3x3 &targetMem ) const; + ::Oyster::Math::Float4x4 & GetRotationMatrix( ::Oyster::Math::Float4x4 &targetMem ) const; + ::Oyster::Math::Float4x4 & GetViewMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + const ::Oyster::Math::Float4x4 & GetProjectionMatrix() const; + ::Oyster::Math::Float4x4 & GetViewsProjMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + + private: + ::Oyster::Math::Float3 translation; + mutable ::Oyster::Math::Float3 angularAxis; + ::Oyster::Math::Float4x4 projection; + mutable ::Oyster::Math::Quaternion rotation; + mutable bool rotationIsOutOfDate; +}; + +#endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp new file mode 100644 index 00000000..8c87970b --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp @@ -0,0 +1,183 @@ +#include "Camera_FPS.h" +#include "Utilities.h" + +using namespace ::Oyster::Math3D; +using namespace ::Utility::Value; + +Camera_FPS::Camera_FPS() +{ // this->head is default set to identity uniformprojection at origo + this->pitchUp = 0.0f; + this->headOffset = + this->body.translation = + this->body.angularAxis = Float3( 0.0f ); + this->body.direction = Float3x3::identity; +} + +Camera_FPS::~Camera_FPS() {} + +Camera_FPS & Camera_FPS::operator = ( const Camera_FPS &camera ) +{ + this->head = camera.head; + this->pitchUp = camera.pitchUp; + this->headOffset = camera.headOffset; + this->body.translation = camera.body.translation; + this->body.angularAxis = camera.body.angularAxis; + this->body.direction = camera.body.direction; + return *this; +} + +void Camera_FPS::SetHeadOffset( const Float3 &translation ) +{ + this->head.Move( translation - this->headOffset ); + this->headOffset = translation; +} + +void Camera_FPS::SetPosition( const Float3 &translation ) +{ + this->head.Move( translation - this->body.translation ); + this->body.translation = translation; +} + +void Camera_FPS::SetAngular( const Float3 &axis ) +{ + this->head.SetAngular( axis ); + this->pitchUp = 0.0f; + this->body.angularAxis = axis; +} + +void Camera_FPS::SetProjection( const Float4x4 &matrix ) +{ + this->head.SetProjection( matrix ); +} + +void Camera_FPS::SetOrthographicProjection( Float width, Float height, Float nearClip, Float farClip ) +{ + this->head.SetOrthographicProjection( width, height, nearClip, farClip ); +} + +void Camera_FPS::SetPerspectiveProjection( Float verticalFoV, Float aspectRatio, Float nearClip, Float farClip ) +{ + this->head.SetPerspectiveProjection( verticalFoV, aspectRatio, nearClip, farClip ); +} + +void Camera_FPS::UpdateOrientation() +{ + RotationMatrix( Rotation(this->body.angularAxis), this->body.direction ); + + Float4x4 orientation = Float4x4( Float4(this->body.direction.v[0], 0.0f), + Float4(this->body.direction.v[1], 0.0f), + Float4(this->body.direction.v[2], 0.0f), + Float4(this->body.translation, 1.0f) ); + + this->head.SetPosition( (orientation * Float4(this->headOffset, 1.0f)).xyz ); +} + +void Camera_FPS::SnapUpToNormal( const Float3 &normal ) +{ + SnapAngularAxis( this->body.angularAxis, this->body.direction.v[1], normal, this->body.angularAxis ); + this->head.SetAngular( this->body.angularAxis + this->pitchUp * Float3::standard_unit_x ); +} + +void Camera_FPS::Move( const Float3 &deltaPosition ) +{ + this->head.Move( deltaPosition ); + this->body.translation += deltaPosition; +} + +void Camera_FPS::Rotate( const Float3 &deltaAngularAxis ) +{ + this->head.Rotate( deltaAngularAxis ); + this->body.angularAxis += deltaAngularAxis; +} + +void Camera_FPS::MoveForward( Float distance ) +{ + this->MoveBackward( -distance ); +} + +void Camera_FPS::MoveBackward( Float distance ) +{ + this->Move( distance * this->body.direction.v[2] ); +} + +void Camera_FPS::StrafeRight( Float distance ) +{ + this->Move( distance * this->body.direction.v[0] ); +} + +void Camera_FPS::StrafeLeft( Float distance ) +{ + this->StrafeRight( -distance ); +} + +void Camera_FPS::PitchUp( Float radian ) +{ + this->pitchUp = Clamp( this->pitchUp + radian, -0.48f * pi, 0.48f * pi ); + this->head.SetAngular( this->body.angularAxis + this->pitchUp * this->body.direction.v[0] ); +} + +void Camera_FPS::PitchDown( Float radian ) +{ + this->PitchUp( -radian ); +} + +void Camera_FPS::YawRight( Float radian ) +{ + this->YawLeft( -radian ); +} + +void Camera_FPS::YawLeft( Float radian ) +{ + this->body.angularAxis += radian * this->body.direction.v[1]; + this->head.SetAngular( this->body.angularAxis + this->pitchUp * this->body.direction.v[0] ); +} + +const Float3 & Camera_FPS::GetHeadOffset() const +{ + return this->headOffset; +} + +const Float3 & Camera_FPS::GetPosition() const +{ + return this->body.translation; +} + +Float4x4 & Camera_FPS::GetViewMatrix( Float4x4 &targetMem ) const +{ + return this->head.GetViewMatrix( targetMem ); +} + +const Float4x4 & Camera_FPS::GetProjectionMatrix() const +{ + return this->head.GetProjectionMatrix(); +} + +Float4x4 & Camera_FPS::GetViewsProjMatrix( Float4x4 &targetMem ) const +{ + return this->head.GetViewsProjMatrix( targetMem ); +} + +Float3 Camera_FPS::GetNormalOf( const Float3 &axis ) const +{ + return this->head.GetNormalOf( axis ); +} + +Float3 Camera_FPS::GetRight() const +{ + return this->body.direction.v[0]; +} + +Float3 Camera_FPS::GetUp() const +{ + return this->body.direction.v[1]; +} + +Float3 Camera_FPS::GetLook() const +{ + return this->head.GetNormalOf( -Float3::standard_unit_z ); +} + +Float3 Camera_FPS::GetForward() const +{ + return -this->body.direction.v[2]; +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.h b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.h new file mode 100644 index 00000000..1a464d7b --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.h @@ -0,0 +1,61 @@ +#ifndef CAMERA_FPS_H +#define CAMERA_FPS_H + +#include "OysterMath.h" +#include "Camera_Basic.h" + +class Camera_FPS +{ +public: + Camera_FPS(); + virtual ~Camera_FPS(); + + Camera_FPS & operator = ( const Camera_FPS &camera ); + + void SetHeadOffset( const ::Oyster::Math::Float3 &translation ); + void SetPosition( const ::Oyster::Math::Float3 &translation ); + void SetAngular( const ::Oyster::Math::Float3 &axis ); + void SetProjection( const ::Oyster::Math::Float4x4 &matrix ); + void SetOrthographicProjection( ::Oyster::Math::Float width, ::Oyster::Math::Float height, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + void SetPerspectiveProjection( ::Oyster::Math::Float verticalFoV, ::Oyster::Math::Float aspectRatio, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + + void UpdateOrientation(); + + void SnapUpToNormal( const ::Oyster::Math::Float3 &normal ); + + void Move( const ::Oyster::Math::Float3 &deltaPosition ); + void Rotate( const ::Oyster::Math::Float3 &deltaAngularAxis ); + + void MoveForward( ::Oyster::Math::Float distance ); + void MoveBackward( ::Oyster::Math::Float distance ); + void StrafeRight( ::Oyster::Math::Float distance ); + void StrafeLeft( ::Oyster::Math::Float distance ); + + void PitchUp( ::Oyster::Math::Float radian ); + void PitchDown( ::Oyster::Math::Float radian ); + void YawRight( ::Oyster::Math::Float radian ); + void YawLeft( ::Oyster::Math::Float radian ); + + const ::Oyster::Math::Float3 & GetHeadOffset() const; + const ::Oyster::Math::Float3 & GetPosition() const; + ::Oyster::Math::Float4x4 & GetViewMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + const ::Oyster::Math::Float4x4 & GetProjectionMatrix() const; + ::Oyster::Math::Float4x4 & GetViewsProjMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + ::Oyster::Math::Float3 GetNormalOf( const ::Oyster::Math::Float3 &axis ) const; + ::Oyster::Math::Float3 GetRight() const; + ::Oyster::Math::Float3 GetUp() const; + ::Oyster::Math::Float3 GetLook() const; + ::Oyster::Math::Float3 GetForward() const; + +private: + Camera_Basic head; + ::Oyster::Math::Float pitchUp; + ::Oyster::Math::Float3 headOffset; + struct + { + ::Oyster::Math::Float3 translation, angularAxis; + ::Oyster::Math::Float3x3 direction; + } body; +}; + +#endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp index 1fffc85e..9db00f9d 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp @@ -1,12 +1,11 @@ #include "GameClientState.h" using namespace DanBias::Client; +using namespace ::Oyster::Network; -GameClientState::GameClientState(void) -{ -} +GameClientState::GameClientState(void) {} +GameClientState::~GameClientState(void) {} -GameClientState::~GameClientState(void) -{ -} +void GameClientState::DataRecieved( NetEvent e ) +{ /* do nothing */ } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 2907317c..a1936bab 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -5,75 +5,47 @@ #include "L_inputClass.h" #include "NetworkClient.h" -namespace DanBias -{ -namespace Client +namespace DanBias { namespace Client { + class GameClientState + { + public: + enum ClientState + { + ClientState_Login, + ClientState_Lan, + ClientState_Lobby, + ClientState_LobbyCreate, + ClientState_LobbyReady, + ClientState_Game, + ClientState_Same, + ClientState_Quit + }; -class GameClientState -{ -public: - struct ProtocolStruct - { + public: + GameClientState(void); + virtual ~GameClientState(void); + virtual bool Init(Oyster::Network::NetworkClient* nwClient) = 0; + virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; + virtual bool Render() = 0; + virtual bool Release() = 0; + virtual void ChangeState( ClientState next ) = 0; + virtual void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; - struct ObjPos :public ProtocolStruct - { - int object_ID; - float worldPos[16]; - }; - struct NewObj :public ProtocolStruct - { - int object_ID; - char* path; - float worldPos[16]; - }; - struct RemoveObj :public ProtocolStruct - { - int object_ID; - //particle effect - }; - struct KeyInput :public ProtocolStruct - { - /* - * key[0] = - * - * - */ - bool key[6]; - }; - struct PlayerPos :public ProtocolStruct - { - float playerPos[3]; - }; - struct PlayerMove :public ProtocolStruct - { - float playerPos[3]; - }; - struct PlayerName :public ProtocolStruct - { - char name[255]; - }; - enum ClientState - { - ClientState_Login, - ClientState_Lobby, - ClientState_Lan, - ClientState_LobbyCreated, - ClientState_Game, - ClientState_Same, - }; +} } -public: - GameClientState(void); - virtual ~GameClientState(void); - virtual bool Init(Oyster::Network::NetworkClient* nwClient) = 0; - virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; - virtual bool Render(float dt) = 0; - virtual bool Release() = 0; - virtual void Protocol(ProtocolStruct* protocolStruct) = 0; +namespace Utility { namespace DynamicMemory +{ // template specializationto allowuse of dynamicmemory tools + template<> + inline void SafeDeleteInstance( ::DanBias::Client::GameClientState *dynamicInstance ) + { + if( dynamicInstance ) + { + dynamicInstance->Release(); + delete dynamicInstance; + } + } +} } -}; -}; -}; #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index 74226008..6366bb8c 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -3,63 +3,60 @@ #include "GameClientState.h" #include "OysterMath.h" #include -#include "Camera.h" + +#include "Camera_FPS.h" #include "LevelLoader/LevelLoader.h" #include "C_obj/C_Player.h" #include "C_obj/C_DynamicObj.h" #include "C_obj/C_StaticObj.h" #include "DynamicArray.h" -namespace DanBias + +namespace DanBias { namespace Client { -namespace Client -{ -class GameState : public GameClientState -{ - enum gameStateState + class GameState : public GameClientState { - gameStateState_loading, - gameStateState_playing, - gameStateState_end, + public: + enum gameStateState + { + gameStateState_loading, + gameStateState_playing, + gameStateState_end, + }; + + GameState(void); + ~GameState(void); + bool Init(Oyster::Network::NetworkClient* nwClient); + GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; + + bool LoadModels(std::string mapFile); + bool InitCamera(Oyster::Math::Float3 startPos) ; + void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); + gameStateState LoadGame(); + void readKeyInput(InputClass* KeyInput); + + bool Render()override; + bool Release()override; + void ChangeState( ClientState next ); + + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); + + private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; + + bool key_forward; + bool key_backward; + bool key_strafeRight; + bool key_strafeLeft; + bool key_Shoot; + bool key_Jump; + Camera_FPS camera; + + int myId; + + Utility::DynamicMemory::DynamicArray> staticObjects; + Utility::DynamicMemory::DynamicArray> dynamicObjects; + //Utility::DynamicMemory::DynamicArray> playObjects; }; -private: - - bool key_forward; - bool key_backward; - bool key_strafeRight; - bool key_strafeLeft; - bool key_Shoot; - bool key_Jump; - Camera* camera; - - int myId; - float pitch; - float timer; - struct myData; - myData* privData; - Utility::DynamicMemory::DynamicArray> staticObjects; - Utility::DynamicMemory::DynamicArray> dynamicObjects; - //Utility::DynamicMemory::DynamicArray> playObjects; -public: - GameState(void); - ~GameState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; - bool LoadModels(std::string mapFile); - bool LoadModels(); - bool InitCamera(Oyster::Math::Float3 startPos) ; - void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); - gameStateState LoadGame(); - void readKeyInput(InputClass* KeyInput); - bool Render(float dt)override; - bool Release()override; - - void Protocol(ProtocolStruct* pos)override; - void Protocol(PlayerPos* pos); - void Protocol(ObjPos* pos); - void Protocol( NewObj* pos ); - void Protocol(RemoveObj* obj); - //void Protocol(LightPos pos); -}; -}; -}; +} } #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index 35fd95a7..c4d2b41d 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -7,210 +7,133 @@ #include "LobbyState.h" #include "GameState.h" -#include "../GameClientRecieverFunc.h" +#include "../Network/NetworkAPI/NetworkClient.h" + +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" +#include "Buttons\TextField.h" #include +#include -using namespace DanBias::Client; +using namespace ::DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Network; +using namespace ::Oyster::Event; +using namespace ::Oyster::Math3D; -struct LanMenuState::myData +struct LanMenuState::MyData { - myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; - C_Object* object[2]; - int modelCount; + MyData(){} - GameRecieverObject* recieverObj; - bool serverOwner; + GameClientState::ClientState nextState; + NetworkClient *nwClient; + Graphics::API::Texture background; + EventButtonCollection guiElements; - // UI object - // game client* -}privData; + TextField *connectIP; + unsigned short connectPort; +} privData; -LanMenuState::LanMenuState() -{ +void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ); -} +LanMenuState::LanMenuState() {} LanMenuState::~LanMenuState() { - + if( this->privData ) + this->Release(); } -bool LanMenuState::Init(Oyster::Network::NetworkClient* nwClient) +bool LanMenuState::Init(Network::NetworkClient* nwClient) { - privData = new myData(); - this->nwClient = nwClient; - // load models - LoadModels(L"UImodels.txt"); - InitCamera(Oyster::Math::Float3(0,0,5.4f)); + this->privData = new MyData(); - return true; -} + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; -bool LanMenuState::LoadModels(std::wstring file) -{ - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Oyster::Math::Float3(-2,3,0); - plight.Color = Oyster::Math::Float3(0,1,0); - plight.Radius = 10; - plight.Bright = 1; - Oyster::Graphics::API::AddLight(plight); - // open file - // read file - // init models - privData->modelCount = 2; + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); - ModelInitData modelData; + // create guiElements + ButtonRectangle *guiElements; + //0.5f, 0.2f, 0.3f, 0.1f, + guiElements = new ButtonRectangle( L"earth_md.png", L"Connect", Float3(1.0f), OnButtonInteract_Connect, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( guiElements ); - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); - modelData.visible = true; - modelData.modelPath = L"..\\Content\\Models\\box_2.dan"; - // load models - privData->object[0] = new C_StaticObj(); - privData->object[0]->Init(modelData); + this->privData->connectIP = new TextField( L"earth_md.png", Float3(1.0f), this, Float3(0.1f, 0.2f, 0.5f), Float2(0.45f, 0.1f), ResizeAspectRatio_Width ); + this->privData->connectIP->ReserveLines( 1 ); + (*this->privData->connectIP)[0] = L"127.0.0.1"; + this->privData->connectIP->SetTextHeight( 0.1f ); + this->privData->connectIP->SetLineSpacing( 0.0f ); + + this->privData->guiElements.AddButton( this->privData->connectIP ); - modelData.position = Oyster::Math::Float3(-2, -2, -2); + // bind guiElements collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->guiElements ); - privData->object[1] = new C_DynamicObj(); - privData->object[1]->Init(modelData); - return true; -} + this->privData->connectPort = 15151; -bool LanMenuState::InitCamera(Oyster::Math::Float3 startPos) -{ - privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000); - //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); - Oyster::Graphics::API::SetProjection(privData->proj); - - privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); return true; } GameClientState::ClientState LanMenuState::Update(float deltaTime, InputClass* KeyInput) { - /*ChangeState(KeyInput); - - if(privData->recieverObj->IsConnected()) - privData->recieverObj->Update(); - KeyInput->Update(); - - if(privData->serverOwner) + MouseInput mouseState; { - DanBias::GameServerAPI::ServerUpdate(); + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); } - DanBias::Client::GameClientState::ClientState state = DanBias::Client::GameClientState::ClientState_Same; - state = privData->recieverObj->gameClientState->Update(deltaTime, KeyInput); + EventHandler::Instance().Update( mouseState ); - if(state != Client::GameClientState::ClientState_Same) - { - privData->recieverObj->gameClientState->Release(); - delete privData->recieverObj->gameClientState; - privData->recieverObj->gameClientState = NULL; - - switch (state) - { - case Client::GameClientState::ClientState_LobbyCreated: - privData->serverOwner = true; - case Client::GameClientState::ClientState_Lobby: - privData->recieverObj->gameClientState = new Client::LobbyState(); - break; - case Client::GameClientState::ClientState_Game: - privData->recieverObj->gameClientState = new Client::GameState(); - break; - default: - //return E_FAIL; - break; - } - privData->recieverObj->gameClientState->Init(privData->recieverObj); // send game client - - }*/ - - return ChangeState(KeyInput); + return this->privData->nextState; } -GameClientState::ClientState LanMenuState::ChangeState(InputClass* KeyInput) +bool LanMenuState::Render( ) { - // create game - if( KeyInput->IsKeyPressed(DIK_C)) - { - DanBias::GameServerAPI::ServerInitDesc desc; + Graphics::API::NewFrame(); - DanBias::GameServerAPI::ServerInitiate(desc); - DanBias::GameServerAPI::ServerStart(); - // my ip - nwClient->Connect(15151, "127.0.0.1"); + Graphics::API::StartGuiRender(); - if (!nwClient->IsConnected()) - { - // failed to connect - return ClientState_Same; - } - return ClientState_Lobby; - } - // join game - if( KeyInput->IsKeyPressed(DIK_J)) - { - // game ip - nwClient->Connect(15151, "194.47.150.56"); + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->guiElements.RenderTexture(); - if (!nwClient->IsConnected()) - { - // failed to connect - return ClientState_Same; - } - return ClientState_Lobby; - } - return ClientState_Same; -} + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); -bool LanMenuState::Render(float dt) -{ - Oyster::Graphics::API::SetView(privData->view); - Oyster::Graphics::API::SetProjection( privData->proj); - - - Oyster::Graphics::API::NewFrame(); - // render objects - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Render(); - } - - // render effects - - // render lights - - Oyster::Graphics::API::EndFrame(); + Graphics::API::EndFrame(); return true; } bool LanMenuState::Release() { - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Release(); - delete privData->object[i]; - privData->object[i] = NULL; - } - - delete privData; privData = NULL; - return true; } -void LanMenuState::Protocol(ProtocolStruct* protocolStruct) -{ - if((PlayerName*)protocolStruct) - PlayerJoinProtocol((PlayerName*)protocolStruct); -} -void LanMenuState::PlayerJoinProtocol(PlayerName* name) +void LanMenuState::ChangeState( ClientState next ) { + switch( next ) + { + case GameClientState::ClientState_Lobby: + // attempt to connect to lobby + if( !this->privData->nwClient->Connect(this->privData->connectPort, (*this->privData->connectIP)[0]) ) + return; + break; + default: break; + } + this->privData->nextState = next; +} + +void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyCreate ); + break; + default: break; + } } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h index 92274a06..8f3e8e67 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h @@ -17,21 +17,13 @@ namespace DanBias virtual bool Init(Oyster::Network::NetworkClient* nwClient); virtual ClientState Update(float deltaTime, InputClass* KeyInput); - ClientState ChangeState(InputClass* KeyInput); - - bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); - - virtual bool Render(float dt); + virtual bool Render(); virtual bool Release(); - virtual void Protocol(ProtocolStruct* protocolStruct); - - void PlayerJoinProtocol(PlayerName* name); + void ChangeState( ClientState next ); private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; }; } } diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp new file mode 100644 index 00000000..21afb54b --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp @@ -0,0 +1,154 @@ +#include "LobbyAdminState.h" +#include "DllInterfaces/GFXAPI.h" +#include "OysterMath.h" +#include "C_obj/C_Player.h" +#include "C_obj/C_StaticObj.h" +#include "C_obj/C_DynamicObj.h" +#include +#include + +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" + +using namespace ::DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Network; +using namespace ::Oyster::Event; +using namespace ::Oyster::Math3D; + +struct LobbyAdminState::MyData +{ + MyData(){} + + GameClientState::ClientState nextState; + NetworkClient *nwClient; + Graphics::API::Texture background; + EventButtonCollection guiElements; +} privData; + +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); + +LobbyAdminState::LobbyAdminState(void) {} + +LobbyAdminState::~LobbyAdminState(void) +{ + if( this->privData ) + this->Release(); +} + +bool LobbyAdminState::Init(NetworkClient* nwClient) +{ + privData = new MyData(); + + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + + // create buttons + ButtonRectangle *button; + + button = new ButtonRectangle( L"earth_md.png", L"Ready", Float3(1.0f), OnButtonInteract_Ready, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); + + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->guiElements ); + + return true; +} + +GameClientState::ClientState LobbyAdminState::Update(float deltaTime, InputClass* KeyInput) +{ + // Wishlist: + // picking + // mouse events + // different menus + // play sounds + // update animation + // send data to server + // check data from server + + MouseInput mouseState; + { + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); + } + + EventHandler::Instance().Update( mouseState ); + + return this->privData->nextState; +} +bool LobbyAdminState::Render( ) +{ + Graphics::API::NewFrame(); + Graphics::API::StartGuiRender(); + + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->guiElements.RenderTexture(); + + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); + + Graphics::API::EndFrame(); + return true; +} +bool LobbyAdminState::Release() +{ + privData = NULL; + return true; +} + +void LobbyAdminState::ChangeState( ClientState next ) +{ + if( next == GameClientState::ClientState_LobbyReady ) + { // If all is ready start server + + } + else + this->privData->nextState = next; +} + +using namespace ::Oyster::Network; + +void LobbyAdminState::DataRecieved( NetEvent e ) +{ + CustomNetProtocol data = e.args.data.protocol; + short ID = data[0].value.netShort; // fetching the id data. + + // Block irrelevant messages. + if( ProtocolIsLobby(ID) ) + { + switch(ID) + { + case protocol_Lobby_Create: break; /** @todo TODO: implement */ + case protocol_Lobby_Start: break; /** @todo TODO: implement */ + case protocol_Lobby_Join: break; /** @todo TODO: implement */ + case protocol_Lobby_Login: break; /** @todo TODO: implement */ + case protocol_Lobby_Refresh: break; /** @todo TODO: implement */ + case protocol_Lobby_ClientData: break; /** @todo TODO: implement */ + case protocol_Lobby_GameData: break; /** @todo TODO: implement */ + default: break; + } + } + else if( ProtocolIsGeneral(ID) ) + { + switch( ID ) + { + case protocol_General_Status: break; /** @todo TODO: implement */ + case protocol_General_Text: break; /** @todo TODO: implement */ + default: break; + } + } +} + +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyReady ); + break; + default: break; + } +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h new file mode 100644 index 00000000..06a9aced --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h @@ -0,0 +1,40 @@ +#ifndef DANBIAS_CLIENT_LOBBYADMINSTATE_H +#define DANBIAS_CLIENT_LOBBYADMINSTATE_H + +#include "GameClientState.h" +#include "NetworkClient.h" + +// Feature wishlist: +// create session lobby +// join session lobby +// set name +// set rules +// set map +// ready +// chat +// kick + +namespace DanBias +{ + namespace Client + { + class LobbyAdminState : public GameClientState + { + public: + LobbyAdminState(); + ~LobbyAdminState(); + + bool Init( Oyster::Network::NetworkClient* nwClient ); + ClientState Update( float deltaTime, InputClass* KeyInput ); + bool Render(); + bool Release(); + void ChangeState( ClientState next ); + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); + + private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; + }; + } +} +#endif // ! DANBIAS_CLIENT_GAMECLIENTSTATE_H diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index df165e40..37f10f1d 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -7,81 +7,59 @@ #include #include -using namespace DanBias::Client; +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" -struct LobbyState::myData -{ - myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; - C_Object* object[2]; - int modelCount; - // UI object - // game client* -}privData; +using namespace ::DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Network; +using namespace ::Oyster::Event; +using namespace ::Oyster::Math3D; -LobbyState::LobbyState(void) +struct LobbyState::MyData { - -} + MyData(){} + + GameClientState::ClientState nextState; + NetworkClient *nwClient; + Graphics::API::Texture background; + EventButtonCollection guiElements; +} privData; + +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); + +LobbyState::LobbyState(void) {} LobbyState::~LobbyState(void) { + if( this->privData ) + this->Release(); +} + +bool LobbyState::Init(NetworkClient* nwClient) +{ + privData = new MyData(); + + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + + // create buttons + ButtonRectangle *button; -} + button = new ButtonRectangle( L"earth_md.png", L"", Float3(1.0f), OnButtonInteract_Ready, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); -bool LobbyState::Init(Oyster::Network::NetworkClient* nwClient) -{ - privData = new myData(); - this->nwClient = nwClient; - // load models - LoadModels(L"UImodels.txt"); - InitCamera(Oyster::Math::Float3(0,0,5.4f)); - return true; -} -bool LobbyState::LoadModels(std::wstring file) -{ - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Oyster::Math::Float3(-2,3,0); - plight.Color = Oyster::Math::Float3(0,1,0); - plight.Radius = 10; - plight.Bright = 1; - Oyster::Graphics::API::AddLight(plight); - // open file - // read file - // init models - privData->modelCount = 2; + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->guiElements ); - ModelInitData modelData; - - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); - modelData.visible = true; - modelData.modelPath = L"crate_colonists.dan"; - // load models - privData->object[0] = new C_StaticObj(); - privData->object[0]->Init(modelData); - - modelData.position = Oyster::Math::Float3(2,2,2); - - privData->object[1] = new C_StaticObj(); - privData->object[1]->Init(modelData); return true; } -bool LobbyState::InitCamera(Oyster::Math::Float3 startPos) -{ - privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000); - //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); - Oyster::Graphics::API::SetProjection(privData->proj); - - privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); - return true; -} GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* KeyInput) { + // Wishlist: // picking // mouse events // different menus @@ -90,61 +68,87 @@ GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* Key // send data to server // check data from server - if(GameServerAPI::ServerIsRunning() && GameServerAPI::ServerIsRunning()) //May be a problem if server is not shut down properly after lan session. + MouseInput mouseState; { - if( KeyInput->IsKeyPressed(DIK_G)) - { - if(!DanBias::GameServerAPI::GameStart()) - { - - } - } + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); } - - return ClientState_Same; + + EventHandler::Instance().Update( mouseState ); + + return this->privData->nextState; } -bool LobbyState::Render(float dt) +bool LobbyState::Render( ) { + Graphics::API::NewFrame(); + Graphics::API::StartGuiRender(); - Oyster::Graphics::API::SetView(privData->view); - Oyster::Graphics::API::SetProjection( privData->proj); + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->guiElements.RenderTexture(); + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); - Oyster::Graphics::API::NewFrame(); - // render objects - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Render(); - } - - // render effects - - // render lights - - Oyster::Graphics::API::EndFrame(); + Graphics::API::EndFrame(); return true; } bool LobbyState::Release() { - Oyster::Graphics::API::ClearLights(); - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Release(); - delete privData->object[i]; - privData->object[i] = NULL; - } - - delete privData; privData = NULL; return true; } -void LobbyState::Protocol(ProtocolStruct* protocol) -{ - if((PlayerName*)protocol) - PlayerJoinProtocol((PlayerName*)protocol); - -} -void LobbyState::PlayerJoinProtocol(PlayerName* name) -{ +void LobbyState::ChangeState( ClientState next ) +{ + if( next == GameClientState::ClientState_LobbyReady ) + { // Send ready signal to server lobby + + } + else + this->privData->nextState = next; +} + +using namespace ::Oyster::Network; + +void LobbyState::DataRecieved( NetEvent e ) +{ + CustomNetProtocol data = e.args.data.protocol; + short ID = data[0].value.netShort; // fetching the id data. + + // Block irrelevant messages. + if( ProtocolIsLobby(ID) ) + { + switch(ID) + { + case protocol_Lobby_Create: break; /** @todo TODO: implement */ + case protocol_Lobby_Start: break; /** @todo TODO: implement */ + case protocol_Lobby_Join: break; /** @todo TODO: implement */ + case protocol_Lobby_Login: break; /** @todo TODO: implement */ + case protocol_Lobby_Refresh: break; /** @todo TODO: implement */ + case protocol_Lobby_ClientData: break; /** @todo TODO: implement */ + case protocol_Lobby_GameData: break; /** @todo TODO: implement */ + default: break; + } + } + else if( ProtocolIsGeneral(ID) ) + { + switch( ID ) + { + case protocol_General_Status: break; /** @todo TODO: implement */ + case protocol_General_Text: break; /** @todo TODO: implement */ + default: break; + } + } +} + +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyReady ); + break; + default: break; + } } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.h b/Code/Game/DanBiasGame/GameClientState/LobbyState.h index 0ba668c9..7b6e5909 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.h +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.h @@ -5,38 +5,38 @@ #include "OysterMath.h" #include "NetworkClient.h" #include + +// Feature wishlist: +// create session lobby +// join session lobby +// set name +// set rules +// set map +// ready +// chat +// kick + namespace DanBias { namespace Client - { - -class LobbyState : public GameClientState -{ -private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; -public: - LobbyState(void); - ~LobbyState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); - ClientState Update(float deltaTime, InputClass* KeyInput); - // create session lobby - // join session lobby - // set name - // set rules - // set map - // ready - // chat - // kick + { + class LobbyState : public GameClientState + { + public: + LobbyState(void); + ~LobbyState(void); - bool Render(float dt); - bool Release(); - void Protocol(ProtocolStruct* protocol)override; - void PlayerJoinProtocol(PlayerName* name); - void GameStarted(); + bool Init( Oyster::Network::NetworkClient* nwClient ); + ClientState Update( float deltaTime, InputClass* KeyInput ); + bool Render(); + bool Release(); + void ChangeState( ClientState next ); + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); -};};}; + private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; + }; + } +} #endif // ! DANBIAS_CLIENT_GAMECLIENTSTATE_H diff --git a/Code/Game/DanBiasGame/GameClientState/LoginState.h b/Code/Game/DanBiasGame/GameClientState/LoginState.h deleted file mode 100644 index a2079835..00000000 --- a/Code/Game/DanBiasGame/GameClientState/LoginState.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef DANBIAS_CLIENT_LOGINSTATE_H -#define DANBIAS_CLIENT_LOGINSTATE_H - -#include "GameClientState.h" -#include "OysterMath.h" -#include "NetworkClient.h" -#include -#include "../Misc/EventHandler/EventButton.h" - -namespace DanBias -{ - namespace Client - { - - class LoginState : public GameClientState - { - private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; - public: - LoginState(void); - ~LoginState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); - ClientState Update(float deltaTime, InputClass* KeyInput); - - static void ButtonCallback(Oyster::Event::ButtonEvent& e); - - bool Render(float dt); - bool Release(); - void Protocol(ProtocolStruct* protocol)override; - void PlayerJoinProtocol(PlayerName* name); - - };};}; -#endif // ! DANBIAS_CLIENT_LOGINSTATE_H \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp new file mode 100644 index 00000000..3c82fc05 --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -0,0 +1,156 @@ +#include "MainState.h" +#include "DllInterfaces/GFXAPI.h" +#include "OysterMath.h" +#include "C_obj/C_Player.h" +#include "C_obj/C_StaticObj.h" +#include "C_obj/C_DynamicObj.h" +#include +#include "NetworkClient.h" + +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" + +using namespace ::DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Math3D; +using namespace ::Oyster::Network; +using namespace ::Oyster::Event; +using namespace ::Utility::DynamicMemory; +using namespace ::Utility::StaticArray; + +struct MainState::MyData +{ + MyData() {} + + GameClientState::ClientState nextState; + NetworkClient *nwClient; + Graphics::API::Texture background; + EventButtonCollection guiElements; +}; + +void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ); + +MainState::MainState(void) {} + +MainState::~MainState(void) +{ + if( this->privData ) + this->Release(); +} + +bool MainState::Init( NetworkClient* nwClient ) +{ + this->privData = new MyData(); + + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + + // create buttons + ButtonRectangle *button; + + button = new ButtonRectangle( L"earth_md.png", L"Create", Float3(1.0f), OnButtonInteract_Create, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); + + button = new ButtonRectangle( L"skysphere_md.png", L"Join", Float3(1.0f), OnButtonInteract_Join, this, Float3(0.5f, 0.4f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); + + button = new ButtonRectangle( L"plane_texture_md.png", L"Quit", Float3(1.0f), OnButtonInteract_Quit, this, Float3(0.5f, 0.8f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); + + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->guiElements ); + + return true; +} + +float mouseX, mouseY; // debug test + +GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) +{ + MouseInput mouseState; + { + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); + } + + EventHandler::Instance().Update( mouseState ); + + mouseX = mouseState.x; // debug test + mouseY = mouseState.y; // debug test + + return this->privData->nextState; +} + +bool MainState::Render() +{ + Graphics::API::NewFrame(); + Graphics::API::StartGuiRender(); + + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->guiElements.RenderTexture(); + + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); + + Graphics::API::RenderText( ::std::to_wstring(mouseX), Float2(0.2f, 0.5f), Float2(0.2f, 0.05f) ); // debug test + Graphics::API::RenderText( ::std::to_wstring(mouseY), Float2(0.5f, 0.5f), Float2(0.2f, 0.05f) ); // debug test + + Graphics::API::EndFrame(); + return true; +} + +bool MainState::Release() +{ + if( this->privData ) + { + Graphics::API::DeleteTexture( this->privData->background ); // TODO: @todo bug caught when exiting by X + EventHandler::Instance().ReleaseCollection( &this->privData->guiElements ); + + this->privData = NULL; + // button collection will be autoreleased from EventHandler + } + return true; +} + +void MainState::ChangeState( ClientState next ) +{ + this->privData->nextState = next; +} + +void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyCreate ); + break; + default: break; + } +} + +void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_Lan ); + break; + default: break; + } +} + +void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_Quit ); + break; + default: break; + } +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h new file mode 100644 index 00000000..7255e917 --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -0,0 +1,29 @@ +#ifndef DANBIAS_CLIENT_MAINSTATE_H +#define DANBIAS_CLIENT_MAINSTATE_H + +#include "GameClientState.h" +#include "OysterMath.h" +#include "NetworkClient.h" +#include +namespace DanBias +{ + namespace Client + { + class MainState : public GameClientState + { + private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; + public: + MainState(void); + ~MainState(void); + bool Init( Oyster::Network::NetworkClient* nwClient ); + ClientState Update(float deltaTime, InputClass* KeyInput); + + bool Render(); + bool Release(); + void ChangeState( ClientState next ); + }; + } +} +#endif // ! DANBIAS_CLIENT_LOGINSTATE_H \ No newline at end of file diff --git a/Code/Game/DanBiasGame/Include/DanBiasGame.h b/Code/Game/DanBiasGame/Include/DanBiasGame.h index 15c3a40e..74248d47 100644 --- a/Code/Game/DanBiasGame/Include/DanBiasGame.h +++ b/Code/Game/DanBiasGame/Include/DanBiasGame.h @@ -15,8 +15,6 @@ #define NOMINMAX #include - - namespace DanBias { extern "C" @@ -24,7 +22,7 @@ namespace DanBias enum DanBiasClientReturn { DanBiasClientReturn_Error, - DanBiasClientReturn_Sucess, + DanBiasClientReturn_Success }; struct DanBiasGameDesc @@ -49,19 +47,19 @@ namespace DanBias static void Release(); private: - - static HRESULT InitDirect3D(); - static HRESULT InitInput(); + enum Result + { + Result_continue, + Result_quit, + Result_error + }; - static HRESULT Update(float deltaTime); - static HRESULT Render(float deltaTime); + static HRESULT InitDirect3D(); + static HRESULT InitInput(); + + static Result Update(float deltaTime); + static HRESULT Render(); static HRESULT CleanUp(); - - static float capFrame; - - private: - static DanBiasGamePrivateData* m_data; - }; diff --git a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj index fec9d7dd..f81a2159 100644 --- a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj +++ b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj @@ -80,7 +80,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) false @@ -96,7 +96,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) diff --git a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user +++ b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) diff --git a/Code/Game/DanBiasLauncher/Launcher.cpp b/Code/Game/DanBiasLauncher/Launcher.cpp index 95bad91c..8ace07dc 100644 --- a/Code/Game/DanBiasLauncher/Launcher.cpp +++ b/Code/Game/DanBiasLauncher/Launcher.cpp @@ -25,11 +25,11 @@ int WINAPI WinMain( HINSTANCE hinst, HINSTANCE prevInst, PSTR cmdLine, int cmdSh gameDesc.hinst = hinst; gameDesc.nCmdShow = cmdShow; - if( DanBias::DanBiasGame::Initiate(gameDesc) == DanBias::DanBiasClientReturn_Sucess) + if( DanBias::DanBiasGame::Initiate(gameDesc) == DanBias::DanBiasClientReturn_Success ) { DanBias::DanBiasGame::Run(); DanBias::DanBiasGame::Release(); } - return cmdShow; + return 0; } \ No newline at end of file diff --git a/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj b/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj index dde29257..caa62c92 100644 --- a/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj +++ b/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj @@ -80,7 +80,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)Game\GameServer;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)WindowManager\;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) false diff --git a/Code/Game/GameProtocols/ObjectProtocols.h b/Code/Game/GameProtocols/ObjectProtocols.h index f265141d..70e24883 100644 --- a/Code/Game/GameProtocols/ObjectProtocols.h +++ b/Code/Game/GameProtocols/ObjectProtocols.h @@ -192,7 +192,7 @@ namespace GameLogic struct Protocol_ObjectScale :public Oyster::Network::CustomProtocolObject { short object_ID; - float position[3]; + float scale[3]; Protocol_ObjectScale() { @@ -204,14 +204,14 @@ namespace GameLogic this->protocol[4].type = Oyster::Network::NetAttributeType_Float; object_ID = 0; - memset(&position[0], 0, sizeof(float) * 3); + memset(&scale[0], 0, sizeof(float) * 3); } Protocol_ObjectScale(Oyster::Network::CustomNetProtocol& p) { object_ID = p[1].value.netShort; - position[0] = p[2].value.netFloat; - position[1] = p[3].value.netFloat; - position[2] = p[4].value.netFloat; + scale[0] = p[2].value.netFloat; + scale[1] = p[3].value.netFloat; + scale[2] = p[4].value.netFloat; } Protocol_ObjectScale(float v[3], int id) { @@ -223,14 +223,14 @@ namespace GameLogic this->protocol[4].type = Oyster::Network::NetAttributeType_Float; object_ID = id; - memcpy(&position[0], &v[0], sizeof(float) * 3); + memcpy(&scale[0], &v[0], sizeof(float) * 3); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; - this->protocol[2].value = position[0]; - this->protocol[3].value = position[1]; - this->protocol[4].value = position[2]; + this->protocol[2].value = scale[0]; + this->protocol[3].value = scale[1]; + this->protocol[4].value = scale[2]; return protocol; } @@ -242,7 +242,7 @@ namespace GameLogic struct Protocol_ObjectRotation :public Oyster::Network::CustomProtocolObject { short object_ID; - float position[3]; + float rotationQ[4]; Protocol_ObjectRotation() { @@ -252,18 +252,20 @@ namespace GameLogic this->protocol[2].type = Oyster::Network::NetAttributeType_Float; this->protocol[3].type = Oyster::Network::NetAttributeType_Float; this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; object_ID = 0; - memset(&position[0], 0, sizeof(float) * 3); + memset(&rotationQ[0], 0, sizeof(float) * 4); } Protocol_ObjectRotation(Oyster::Network::CustomNetProtocol& p) { object_ID = p[1].value.netShort; - position[0] = p[2].value.netFloat; - position[1] = p[3].value.netFloat; - position[2] = p[4].value.netFloat; + rotationQ[0] = p[2].value.netFloat; + rotationQ[1] = p[3].value.netFloat; + rotationQ[2] = p[4].value.netFloat; + rotationQ[3] = p[5].value.netFloat; } - Protocol_ObjectRotation(float v[3], int id) + Protocol_ObjectRotation(float v[4], int id) { this->protocol[0].value = protocol_Gameplay_ObjectRotation; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; @@ -271,16 +273,18 @@ namespace GameLogic this->protocol[2].type = Oyster::Network::NetAttributeType_Float; this->protocol[3].type = Oyster::Network::NetAttributeType_Float; this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; object_ID = id; - memcpy(&position[0], &v[0], sizeof(float) * 3); + memcpy(&rotationQ[0], &v[0], sizeof(float) * 4); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; - this->protocol[2].value = position[0]; - this->protocol[3].value = position[1]; - this->protocol[4].value = position[2]; + this->protocol[2].value = rotationQ[0]; + this->protocol[3].value = rotationQ[1]; + this->protocol[4].value = rotationQ[2]; + this->protocol[5].value = rotationQ[3]; return protocol; } @@ -292,7 +296,7 @@ namespace GameLogic { short object_ID; float position[3]; - float rotation[4]; + float rotationQ[4]; Protocol_ObjectPositionRotation() { @@ -311,7 +315,7 @@ namespace GameLogic this->object_ID = 0; memset(&this->position[0], 0, sizeof(float) * 3); - memset(&this->rotation[0], 0, sizeof(float) * 4); + memset(&this->rotationQ[0], 0, sizeof(float) * 4); } Protocol_ObjectPositionRotation(Oyster::Network::CustomNetProtocol& p) { @@ -321,10 +325,10 @@ namespace GameLogic this->position[1] = p[3].value.netFloat; this->position[2] = p[4].value.netFloat; //ROTATION - this->rotation[0] = p[5].value.netFloat; - this->rotation[1] = p[6].value.netFloat; - this->rotation[2] = p[7].value.netFloat; - this->rotation[3] = p[8].value.netFloat; + this->rotationQ[0] = p[5].value.netFloat; + this->rotationQ[1] = p[6].value.netFloat; + this->rotationQ[2] = p[7].value.netFloat; + this->rotationQ[3] = p[8].value.netFloat; } Protocol_ObjectPositionRotation(float p[3], float r[4], int id) { @@ -343,7 +347,7 @@ namespace GameLogic object_ID = id; memcpy(&this->position[0], &p[0], sizeof(float) * 3); - memcpy(&this->rotation[0], &r[0], sizeof(float) * 4); + memcpy(&this->rotationQ[0], &r[0], sizeof(float) * 4); } Oyster::Network::CustomNetProtocol GetProtocol() override { @@ -351,10 +355,10 @@ namespace GameLogic this->protocol[2].value = this->position[0]; this->protocol[3].value = this->position[1]; this->protocol[4].value = this->position[2]; - this->protocol[5].value = this->rotation[0]; - this->protocol[6].value = this->rotation[1]; - this->protocol[7].value = this->rotation[2]; - this->protocol[8].value = this->rotation[3]; + this->protocol[5].value = this->rotationQ[0]; + this->protocol[6].value = this->rotationQ[1]; + this->protocol[7].value = this->rotationQ[2]; + this->protocol[8].value = this->rotationQ[3]; return protocol; } @@ -441,66 +445,82 @@ namespace GameLogic //ObjectType type; //ie player, box or whatever int object_ID; std::string name; - float worldMatrix[16]; + float position[3]; + float rotationQ[4]; + float scale[3]; Protocol_ObjectCreate() { this->protocol[0].value = protocol_Gameplay_ObjectCreate; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - + //NAME this->protocol[1].type = Oyster::Network::NetAttributeType_Int; - this->protocol[2].type = Oyster::Network::NetAttributeType_CharArray; - - for (int i = 3; i <= 18; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } - } - Protocol_ObjectCreate(Oyster::Network::CustomNetProtocol& p) - { + this->protocol[2].type = Oyster::Network::NetAttributeType_CharArray; + //POSITION + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; + this->protocol[9].type = Oyster::Network::NetAttributeType_Float; + //SCALE + this->protocol[10].type = Oyster::Network::NetAttributeType_Float; + this->protocol[11].type = Oyster::Network::NetAttributeType_Float; + this->protocol[12].type = Oyster::Network::NetAttributeType_Float; + this->object_ID = 0; + memset(this->position, 0, sizeof(float) * 3); + memset(this->rotationQ, 0, sizeof(float) * 4); } - Protocol_ObjectCreate(float m[16], int id, char *path) + Protocol_ObjectCreate( Oyster::Network::CustomNetProtocol& p ) + { + /** @todo TODO: not implemented */ + } + Protocol_ObjectCreate(float p[3], float r[4], float s[3], int id, char *path) { this->protocol[0].value = protocol_Gameplay_ObjectCreate; this->protocol[0].type = Oyster::Network::NetAttributeType_Int; - + //NAME this->protocol[1].type = Oyster::Network::NetAttributeType_Int; this->protocol[2].type = Oyster::Network::NetAttributeType_CharArray; - - for (int i = 3; i <= 18; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } + //POSITION + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; + this->protocol[9].type = Oyster::Network::NetAttributeType_Float; + //SCALE + this->protocol[10].type = Oyster::Network::NetAttributeType_Float; + this->protocol[11].type = Oyster::Network::NetAttributeType_Float; + this->protocol[12].type = Oyster::Network::NetAttributeType_Float; object_ID = id; this->name = path; - memcpy(&worldMatrix[0], &m[0], sizeof(float)*16); + + memcpy(this->position, p, sizeof(float) * 3); + memcpy(this->rotationQ, r, sizeof(float) * 4); + memcpy(this->scale, s, sizeof(float) * 3); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; this->protocol.Set(2, name); - this->protocol[3].value = worldMatrix[0]; - this->protocol[4].value = worldMatrix[1]; - this->protocol[5].value = worldMatrix[2]; - this->protocol[6].value = worldMatrix[3]; - this->protocol[7].value = worldMatrix[4]; - this->protocol[8].value = worldMatrix[5]; - this->protocol[9].value = worldMatrix[6]; - this->protocol[10].value = worldMatrix[7]; - this->protocol[11].value = worldMatrix[8]; - this->protocol[12].value = worldMatrix[9]; - this->protocol[13].value = worldMatrix[10]; - this->protocol[14].value = worldMatrix[11]; - this->protocol[15].value = worldMatrix[12]; - this->protocol[16].value = worldMatrix[13]; - this->protocol[17].value = worldMatrix[14]; - this->protocol[18].value = worldMatrix[15]; - - - + this->protocol[3].value = this->position[0]; + this->protocol[4].value = this->position[1]; + this->protocol[5].value = this->position[2]; + this->protocol[6].value = this->rotationQ[0]; + this->protocol[7].value = this->rotationQ[1]; + this->protocol[8].value = this->rotationQ[2]; + this->protocol[9].value = this->rotationQ[3]; + this->protocol[10].value = this->scale[0]; + this->protocol[11].value = this->scale[1]; + this->protocol[12].value = this->scale[2]; return protocol; } diff --git a/Code/Game/GameProtocols/ProtocolIdentificationID.h b/Code/Game/GameProtocols/ProtocolIdentificationID.h index 62d0983e..8d311b93 100644 --- a/Code/Game/GameProtocols/ProtocolIdentificationID.h +++ b/Code/Game/GameProtocols/ProtocolIdentificationID.h @@ -74,6 +74,7 @@ /************************************/ /*********** PROTOCOL MACROS ***************************************************************************************************/ /************************************/ + inline bool ProtocolIsLobby(short ID) { return (ID >= protocol_LobbyMIN && ID <= protocol_LobbyMAX); } inline bool ProtocolIsGeneral(short ID) { return (ID >= protocol_GeneralMIN && ID <= protocol_GeneralMAX); } inline bool ProtocolIsGameplay(short ID) { return (ID >= protocol_GameplayMIN && ID <= protocol_GameplayMAX); } diff --git a/Code/Game/GameServer/GameServer.vcxproj b/Code/Game/GameServer/GameServer.vcxproj index 23bf0eb0..4a63c4f7 100644 --- a/Code/Game/GameServer/GameServer.vcxproj +++ b/Code/Game/GameServer/GameServer.vcxproj @@ -83,7 +83,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Game\GameLogic\;$(SolutionDir)Network\NetworkAPI\;$(SolutionDir)OysterMath\;$(SolutionDir)GamePhysics\;$(SolutionDir)Misc\;$(SolutionDir)WindowManager\;$(SolutionDir)OysterPhysics3D\;$(SolutionDir)Game\ServerDependencies;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) + $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) false @@ -99,7 +99,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Game\GameLogic\;$(SolutionDir)Network\NetworkAPI\;$(SolutionDir)OysterMath\;$(SolutionDir)GamePhysics\;$(SolutionDir)Misc\;$(SolutionDir)WindowManager\;$(SolutionDir)OysterPhysics3D\;$(SolutionDir)Game\ServerDependencies;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) + $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) @@ -200,6 +200,9 @@ {f10cbc03-9809-4cba-95d8-327c287b18ee} + + {35aea3c0-e0a7-4e1e-88cd-514aa5a442b1} + {b1195bb9-b3a5-47f0-906c-8dea384d1520} diff --git a/Code/Game/GameServer/GameServer.vcxproj.user b/Code/Game/GameServer/GameServer.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/GameServer/GameServer.vcxproj.user +++ b/Code/Game/GameServer/GameServer.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) diff --git a/Code/Game/GameServer/GameServerAPI.h b/Code/Game/GameServer/GameServerAPI.h index 7ceab867..0b49070a 100644 --- a/Code/Game/GameServer/GameServerAPI.h +++ b/Code/Game/GameServer/GameServerAPI.h @@ -4,7 +4,7 @@ #ifndef DANBIAS_SERVER_DANBIAS_SERVER_H #define DANBIAS_SERVER_DANBIAS_SERVER_H -#include +//#include #define DANBIAS_SERVER diff --git a/Code/Game/GameServer/Implementation/GameSession_General.cpp b/Code/Game/GameServer/Implementation/GameSession_General.cpp index 1fe78638..bdde6de1 100644 --- a/Code/Game/GameServer/Implementation/GameSession_General.cpp +++ b/Code/Game/GameServer/Implementation/GameSession_General.cpp @@ -161,7 +161,11 @@ namespace DanBias { if((this->clients[k] && readyList[i]) && readyList[i]->GetClient()->GetID() != this->clients[k]->GetClient()->GetID()) { - Protocol_ObjectCreate p(this->clients[k]->GetPlayer()->GetOrientation(), this->clients[k]->GetPlayer()->GetID(), "char_temporary.dan"); //The model name will be custom later.. + //Protocol_ObjectCreatePlayer + Protocol_ObjectCreate p( this->clients[k]->GetPlayer()->GetPosition(), + this->clients[k]->GetPlayer()->GetRotation(), + this->clients[k]->GetPlayer()->GetScale(), + this->clients[k]->GetPlayer()->GetID(), "char_white.dan"); //The model name will be custom later.. readyList[i]->GetClient()->Send(p); } } diff --git a/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj b/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj index f9b46097..e2d9f671 100644 --- a/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj +++ b/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj @@ -80,7 +80,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) false @@ -96,7 +96,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) diff --git a/Code/Misc/Misc.vcxproj.user b/Code/Misc/Misc.vcxproj.user index 9a0b0ae0..3f030911 100644 --- a/Code/Misc/Misc.vcxproj.user +++ b/Code/Misc/Misc.vcxproj.user @@ -1,6 +1,6 @@  - true + false \ No newline at end of file diff --git a/Code/Network/NetworkAPI/CustomNetProtocol.h b/Code/Network/NetworkAPI/CustomNetProtocol.h index c982bd1f..48feb3a9 100644 --- a/Code/Network/NetworkAPI/CustomNetProtocol.h +++ b/Code/Network/NetworkAPI/CustomNetProtocol.h @@ -84,7 +84,7 @@ namespace Oyster type = p.type; if(type == NetAttributeType_CharArray && p.value.netCharPtr) { - int len = 0; + size_t len = 0; if((len = strlen(p.value.netCharPtr)) == 0) return; len++; value.netCharPtr = new char[len]; @@ -106,7 +106,7 @@ namespace Oyster type = p.type; if(type == NetAttributeType_CharArray && p.value.netCharPtr) { - int len = 0; + size_t len = 0; if((len = strlen(p.value.netCharPtr)) == 0) return *this; len++; value.netCharPtr = new char[len]; diff --git a/Code/Network/NetworkAPI/NetworkClient.cpp b/Code/Network/NetworkAPI/NetworkClient.cpp index 1f470c11..501aefdb 100644 --- a/Code/Network/NetworkAPI/NetworkClient.cpp +++ b/Code/Network/NetworkAPI/NetworkClient.cpp @@ -35,6 +35,8 @@ using namespace std; *************************************/ typedef NetworkClient::ClientEventArgs CEA; +void OnRecieve_Default(NetEvent e) {} + struct NetworkClient::PrivateData : public IThreadObject { NetworkSession *owner; @@ -58,7 +60,6 @@ struct NetworkClient::PrivateData : public IThreadObject , parent(0) , owner(0) { - InitWinSock(); this->thread.Create(this, false); this->thread.SetPriority(Oyster::Thread::OYSTER_THREAD_PRIORITY_1); @@ -226,7 +227,8 @@ unsigned int NetworkClient::PrivateData::currID = 0; *************************************/ NetworkClient::NetworkClient() - : privateData(0) + : privateData(nullptr), + OnRecieve(OnRecieve_Default) { } NetworkClient::~NetworkClient() @@ -333,6 +335,18 @@ void NetworkClient::SetOwner(NetworkSession* owner) this->privateData->owner = owner; } +void NetworkClient::SetMessagePump( NetworkClient::ClientEventFunction func ) +{ + if( func ) + { + this->OnRecieve = func; + } + else + { + this->OnRecieve = OnRecieve_Default; + } +} + bool NetworkClient::IsConnected() { if(!this->privateData) return false; @@ -350,6 +364,10 @@ void NetworkClient::DataRecieved(NetEvent e) { this->privateData->owner->ClientEventCallback(e); } + else + { + this->OnRecieve( e ); + } } //void NetworkClient::NetworkCallback(Oyster::Network::CustomNetProtocol& p) diff --git a/Code/Network/NetworkAPI/NetworkClient.h b/Code/Network/NetworkAPI/NetworkClient.h index b7e0d6a4..58d81360 100644 --- a/Code/Network/NetworkAPI/NetworkClient.h +++ b/Code/Network/NetworkAPI/NetworkClient.h @@ -113,6 +113,11 @@ namespace Oyster */ void SetOwner(NetworkSession* owner); + /** + * + */ + void SetMessagePump( ClientEventFunction func ); + /** * */ @@ -140,6 +145,7 @@ namespace Oyster NetworkClient(const NetworkClient& obj); NetworkClient& operator =(const NetworkClient& obj); + ClientEventFunction OnRecieve; struct PrivateData; PrivateData* privateData; }; diff --git a/Code/Network/NetworkAPI/Translator.cpp b/Code/Network/NetworkAPI/Translator.cpp index 3e460b54..a38fb8b2 100644 --- a/Code/Network/NetworkAPI/Translator.cpp +++ b/Code/Network/NetworkAPI/Translator.cpp @@ -47,7 +47,7 @@ struct Translator::PrivateData headerString.push_back(it->type); } - message.PackShort(headerString.size(), bytes); + message.PackShort((short)headerString.size(), bytes); size += 2; for(int i = 0; i < (int)headerString.size(); i++) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 9b21fc02..a6d48eb2 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -125,17 +125,17 @@ namespace std } /******************************************************************* - * @param numerator of the vector vec - * @return the denomiator of the vector vec. + * @param integer part of the elements in vector vec + * @return the fract part of the elements in vector vec. *******************************************************************/ template - inline ::LinearAlgebra::Vector3 modf( const ::LinearAlgebra::Vector3 &vec, ::LinearAlgebra::Vector3 &numerator ) + inline ::LinearAlgebra::Vector3 modf( const ::LinearAlgebra::Vector3 &vec, ::LinearAlgebra::Vector3 &integer ) { - ::LinearAlgebra::Vector3 denominator; - denominator.x = (ScalarType)modf( vec.x, &numerator.x ); - denominator.y = (ScalarType)modf( vec.y, &numerator.y ); - denominator.z = (ScalarType)modf( vec.z, &numerator.z ); - return denominator; + ::LinearAlgebra::Vector3 fract; + fract.x = (ScalarType)modf( vec.x, &integer.x ); + fract.y = (ScalarType)modf( vec.y, &integer.y ); + fract.z = (ScalarType)modf( vec.z, &integer.z ); + return fract; } /******************************************************************* @@ -392,6 +392,25 @@ namespace LinearAlgebra3D // return ::std::asin( ::LinearAlgebra::Vector4(orientationMatrix.v[1].z, orientationMatrix.v[2].x, orientationMatrix.v[0].y, 0) ); //} + + template + inline ::LinearAlgebra::Matrix4x4 ScalingMatrix( const ::LinearAlgebra::Vector3 &s ) + { + return ::LinearAlgebra::Matrix4x4( s.x, 0, 0, 0, + 0, s.y, 0, 0, + 0, 0, s.z, 0, + 0, 0, 0, 1 ); + } + + template + inline ::LinearAlgebra::Matrix4x4 ScalingMatrix( const ::LinearAlgebra::Vector4 &s ) + { + return ::LinearAlgebra::Matrix4x4( s.x, 0, 0, 0, + 0, s.y, 0, 0, + 0, 0, s.z, 0, + 0, 0, 0, s.w ); + } + template inline ::LinearAlgebra::Matrix4x4 & TranslationMatrix( const ::LinearAlgebra::Vector3 &position, ::LinearAlgebra::Matrix4x4 &targetMem = ::LinearAlgebra::Matrix4x4() ) { @@ -451,6 +470,17 @@ namespace LinearAlgebra3D } } + template + inline ::LinearAlgebra::Matrix3x3 & RotationMatrix( const ::LinearAlgebra::Quaternion &rotationQuaternion, ::LinearAlgebra::Matrix3x3 &targetMem = ::LinearAlgebra::Matrix3x3() ) + { + ::LinearAlgebra::Quaternion conjugate = rotationQuaternion.GetConjugate(); + + targetMem.v[0] = (rotationQuaternion * ::LinearAlgebra::Vector3(1,0,0) * conjugate).imaginary; + targetMem.v[1] = (rotationQuaternion * ::LinearAlgebra::Vector3(0,1,0) * conjugate).imaginary; + targetMem.v[2] = (rotationQuaternion * ::LinearAlgebra::Vector3(0,0,1) * conjugate).imaginary; + return targetMem; + } + template inline ::LinearAlgebra::Matrix4x4 & RotationMatrix( const ::LinearAlgebra::Quaternion &rotationQuaternion, ::LinearAlgebra::Matrix4x4 &targetMem = ::LinearAlgebra::Matrix4x4() ) { @@ -790,7 +820,7 @@ namespace LinearAlgebra3D { return normalizedAxis * ( vector.Dot(normalizedAxis) ); } template - ::LinearAlgebra::Vector4 & SnapAngularAxis( ::LinearAlgebra::Vector4 &startAngularAxis, const ::LinearAlgebra::Vector4 &localStartNormal, const ::LinearAlgebra::Vector4 &worldEndNormal, ::LinearAlgebra::Vector4 &targetMem = ::LinearAlgebra::Vector4() ) + ::LinearAlgebra::Vector4 & SnapAngularAxis( const ::LinearAlgebra::Vector4 &startAngularAxis, const ::LinearAlgebra::Vector4 &localStartNormal, const ::LinearAlgebra::Vector4 &worldEndNormal, ::LinearAlgebra::Vector4 &targetMem = ::LinearAlgebra::Vector4() ) { ::LinearAlgebra::Vector4 worldStartNormal( WorldAxisOf(Rotation(startAngularAxis.xyz), localStartNormal.xyz), (ScalarType)0 ); targetMem = ::LinearAlgebra::Vector4( worldStartNormal.xyz.Cross(worldEndNormal.xyz), (ScalarType)0); @@ -799,11 +829,12 @@ namespace LinearAlgebra3D } template - ::LinearAlgebra::Vector3 & SnapAngularAxis( ::LinearAlgebra::Vector3 &startAngularAxis, const ::LinearAlgebra::Vector3 &localStartNormal, const ::LinearAlgebra::Vector3 &worldEndNormal, ::LinearAlgebra::Vector3 &targetMem = ::LinearAlgebra::Vector3() ) + ::LinearAlgebra::Vector3 & SnapAngularAxis( const ::LinearAlgebra::Vector3 &startAngularAxis, const ::LinearAlgebra::Vector3 &localStartNormal, const ::LinearAlgebra::Vector3 &worldEndNormal, ::LinearAlgebra::Vector3 &targetMem = ::LinearAlgebra::Vector3() ) { - return targetMem = SnapAngularAxis( ::LinearAlgebra::Vector4(startAngularAxis, (ScalarType)0), - ::LinearAlgebra::Vector4(localStartNormal, (ScalarType)0), - ::LinearAlgebra::Vector4(worldEndNormal, (ScalarType)0) ).xyz; + ::LinearAlgebra::Vector3 worldStartNormal( WorldAxisOf(Rotation(startAngularAxis), localStartNormal) ); + targetMem = worldStartNormal.Cross( worldEndNormal ); + targetMem *= (ScalarType)::std::acos( ::Utility::Value::Clamp(worldStartNormal.Dot(worldEndNormal), (ScalarType)0, (ScalarType)1) ); + return targetMem += startAngularAxis; } template diff --git a/Code/OysterMath/OysterMath.cpp b/Code/OysterMath/OysterMath.cpp index 7f7b1393..3906a1db 100644 --- a/Code/OysterMath/OysterMath.cpp +++ b/Code/OysterMath/OysterMath.cpp @@ -167,6 +167,11 @@ namespace Oyster { namespace Math3D return ::LinearAlgebra3D::Rotation( angularAxis ); } + Float3x3 & RotationMatrix( const Quaternion &rotationQuaternion, Float3x3 &targetMem ) + { + return ::LinearAlgebra3D::RotationMatrix( rotationQuaternion, targetMem ); + } + Float4x4 & RotationMatrix( const Quaternion &rotationQuaternion, Float4x4 &targetMem ) { return ::LinearAlgebra3D::RotationMatrix( rotationQuaternion, targetMem ); diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 6e8a66de..23ba55ff 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -170,6 +170,9 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized /** @todo TODO: add doc */ Quaternion Rotation( const Float4 &angularAxis ); + /** @todo TODO: add doc */ + Float3x3 & RotationMatrix( const Quaternion &rotationQuaternion, Float3x3 &targetMem ); + /** @todo TODO: add doc */ Float4x4 & RotationMatrix( const Quaternion &rotationQuaternion, Float4x4 &targetMem = Float4x4() ); @@ -334,6 +337,8 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized using ::LinearAlgebra3D::InterpolateOrientation_UsingRigidNlerp; using ::LinearAlgebra3D::InterpolateOrientation_UsingSlerp; using ::LinearAlgebra3D::SnapAngularAxis; + using ::LinearAlgebra3D::WorldAxisOf; + using ::LinearAlgebra3D::ScalingMatrix; } } #endif \ No newline at end of file diff --git a/Code/StandAloneLauncher/App.config b/Code/StandAloneLauncher/App.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Code/StandAloneLauncher/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/Form1.Designer.cs b/Code/StandAloneLauncher/Form1.Designer.cs new file mode 100644 index 00000000..3ee09fcb --- /dev/null +++ b/Code/StandAloneLauncher/Form1.Designer.cs @@ -0,0 +1,47 @@ +namespace StandAloneLauncher +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(791, 318); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + } +} + diff --git a/Code/StandAloneLauncher/Form1.cs b/Code/StandAloneLauncher/Form1.cs new file mode 100644 index 00000000..cd716360 --- /dev/null +++ b/Code/StandAloneLauncher/Form1.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace StandAloneLauncher +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + } +} diff --git a/Code/StandAloneLauncher/Form1.resx b/Code/StandAloneLauncher/Form1.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/Code/StandAloneLauncher/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/Program.cs b/Code/StandAloneLauncher/Program.cs new file mode 100644 index 00000000..80169b50 --- /dev/null +++ b/Code/StandAloneLauncher/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace StandAloneLauncher +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Code/StandAloneLauncher/Properties/AssemblyInfo.cs b/Code/StandAloneLauncher/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..d510a94a --- /dev/null +++ b/Code/StandAloneLauncher/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("StandAloneLauncher")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("StandAloneLauncher")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("097f66eb-157a-4774-8b3f-be55646a6398")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Code/StandAloneLauncher/Properties/Resources.Designer.cs b/Code/StandAloneLauncher/Properties/Resources.Designer.cs new file mode 100644 index 00000000..87b83ff1 --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18444 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace StandAloneLauncher.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("StandAloneLauncher.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Code/StandAloneLauncher/Properties/Resources.resx b/Code/StandAloneLauncher/Properties/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/Properties/Settings.Designer.cs b/Code/StandAloneLauncher/Properties/Settings.Designer.cs new file mode 100644 index 00000000..18c7c5f4 --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18444 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace StandAloneLauncher.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Code/StandAloneLauncher/Properties/Settings.settings b/Code/StandAloneLauncher/Properties/Settings.settings new file mode 100644 index 00000000..39645652 --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Code/StandAloneLauncher/StandAloneLauncher.csproj b/Code/StandAloneLauncher/StandAloneLauncher.csproj new file mode 100644 index 00000000..fad6a6a6 --- /dev/null +++ b/Code/StandAloneLauncher/StandAloneLauncher.csproj @@ -0,0 +1,134 @@ + + + + + Debug + AnyCPU + {604A12A7-07BF-4482-BDF3-7101C811F121} + WinExe + Properties + StandAloneLauncher + StandAloneLauncher + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + true + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {c8cba520-5d7d-4d61-a8da-6e05fd132bcb} + CLIStandaloneServer + + + + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.exe.config b/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.exe.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.config b/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.manifest b/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.manifest new file mode 100644 index 00000000..061c9ca9 --- /dev/null +++ b/Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.exe.config b/Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.exe.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.vshost.exe.config b/Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.vshost.exe.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file