15 Commits

Author SHA1 Message Date
13f49b388b fucked around with abh code 2020-02-21 00:41:09 +01:00
f82a446c00 fixed merge conflict 2020-01-25 20:46:19 +01:00
3404d7f306 implemented main SA movement features and defcheck 2020-01-25 20:42:16 +01:00
3b0319d009 added bool for keping tack of queuejump status 2020-01-25 20:25:48 +01:00
efc6c32c33 updated gitignore 2020-01-25 20:23:11 +01:00
4dcea96189 updated gitignore 2020-01-25 20:22:03 +01:00
a6fb0e805d updated gitignore 2020-01-25 20:21:35 +01:00
aedc714659 Update .gitignore 2020-01-24 10:00:07 +01:00
bcf509c5df Fixed prediction errors
https://steamcommunity.com/app/211/discussions/1/1743343017631727486/
2019-08-28 03:32:34 +02:00
4364cb87e7 gitignore 2019-08-13 06:24:49 +02:00
4395aa7480 added game directories to gitignore 2019-08-13 06:23:19 +02:00
7365158cee Added .vs folder to gitignore 2019-08-13 06:19:20 +02:00
564fe3af56 Update .gitignore 2019-08-13 06:02:15 +02:00
d32393955b Autojump 2019-08-13 06:01:19 +02:00
2eb7b264ba Updated gitignore and added solution 2019-08-13 06:01:09 +02:00
7 changed files with 209 additions and 37 deletions

25
.gitignore vendored
View File

@@ -19,6 +19,12 @@ ipch
*.idb
*.vcxproj
*.sln
*.lib
# Visual studio config dirs
.vs/*
mp/src/.vs/*
sp/src/.vs/*
# OSX/Linux build products
*.mak
@@ -54,3 +60,22 @@ config.cfg
# shader files
*.tmp
sp/game/mod_hl2/cfg/server_blacklist.txt
*.cache
*.pdb
*.db
sp/game/mod_hl2/GameState.txt
sp/game/mod_hl2/maps/graphs/sdk_vehicles.ain
sp/game/mod_hl2/stats.txt
sp/game/mod_hl2/voice_ban.dt
*.vcxproj.FileListAbsolute.txt
*.vpc_crc
*.sentinel
*.filters
*.lib
#game directories
sp/game/*
mp/game/*

3
.vs/ProjectSettings.json Normal file
View File

@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": "No Configurations"
}

View File

@@ -36,6 +36,14 @@ extern IFileSystem *filesystem;
#endif
#ifndef SA_MOVEMENT
#define SA_MOVEMENT
#endif
ConVar sa_sv_pogostick("sv_pogostick", "0", FCVAR_REPLICATED, "queue jumps", 1, 0, 1, 1);
ConVar sa_sv_queuejump("sv_queuejump", "1", FCVAR_REPLICATED, "auto bunny hopping", 1, 0, 1, 1);
// tickcount currently isn't set during prediction, although gpGlobals->curtime and
// gpGlobals->frametime are. We should probably set tickcount (to player->m_nTickBase),
// but we're REALLY close to shipping, so we can change that later and people can use
@@ -62,7 +70,7 @@ ConVar debug_latch_reset_onduck( "debug_latch_reset_onduck", "1", FCVAR_CHEAT );
#endif
// [MD] I'll remove this eventually. For now, I want the ability to A/B the optimizations.
bool g_bMovementOptimizations = true;
bool g_bMovementOptimizations = false; //switched to false to fix prediction errors
// Roughly how often we want to update the info about the ground surface we're on.
// We don't need to do this very often.
@@ -1199,6 +1207,14 @@ void CGameMovement::FinishTrackPredictionErrors( CBasePlayer *pPlayer )
//-----------------------------------------------------------------------------
void CGameMovement::FinishMove( void )
{
ConVar* pPogoStick = cvar->FindVar("sv_pogostick");
ConVar* pQueueJump = cvar->FindVar("sv_queuejump");
if (!(mv->m_nButtons & IN_JUMP) && pQueueJump->GetInt() == 1) {
mv->m_bRejumpAllowed = true;
}
else if (pPogoStick->GetInt() == 1) {
mv->m_bRejumpAllowed = true;
}
mv->m_nOldButtons = mv->m_nButtons;
}
@@ -1889,6 +1905,12 @@ void CGameMovement::StayOnGround( void )
}
}
// Camera Bob
ConVar cl_camtilt_enabled("cl_camtilt_enabled", "1", 0, "Oscillation Toggle", true, 0, true, 1);
ConVar cl_viewbob_timer("cl_viewbob_timer", "1", 0, "Speed of Oscillation");
ConVar cl_camtilt_scale("cl_camtilt_scale", "2.5", 0, "Magnitude of Oscillation");
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
@@ -1915,6 +1937,16 @@ void CGameMovement::WalkMove( void )
fmove = mv->m_flForwardMove;
smove = mv->m_flSideMove;
if (cl_camtilt_enabled.GetInt() == 1 && !engine->IsPaused())
{
float offset = 2 * cl_viewbob_timer.GetFloat() * player->GetAbsVelocity().Length() * cl_camtilt_scale.GetFloat() / 4000000 * smove;
QAngle playerAngles = mv->m_vecViewAngles;
QAngle camTilt(0, 0, offset);
QAngle resultAngles(playerAngles.x, playerAngles.y, playerAngles.z + camTilt.z);
player->ViewPunch(camTilt);
}
// Zero out z components of movement vectors
if ( g_bMovementOptimizations )
{
@@ -2075,6 +2107,7 @@ void CGameMovement::FullWalkMove( )
if ( player->GetGroundEntity() != NULL )
{
mv->m_vecVelocity[2] = 0;
mv->m_bRejumpAllowed = true;
}
}
else
@@ -2353,6 +2386,9 @@ void CGameMovement::PlaySwimSound()
//-----------------------------------------------------------------------------
bool CGameMovement::CheckJumpButton( void )
{
ConVar* pPogoStick = cvar->FindVar("sv_pogostick");
ConVar* pQueueJump = cvar->FindVar("sv_queuejump");
if (player->pl.deadflag)
{
mv->m_nOldButtons |= IN_JUMP ; // don't jump again until released
@@ -2392,11 +2428,13 @@ bool CGameMovement::CheckJumpButton( void )
}
// No more effect
if (player->GetGroundEntity() == NULL)
if (player->GetGroundEntity() == NULL)
{
mv->m_nOldButtons |= IN_JUMP;
//Removed because we don't want the jump button to become 'unpressed'
// mv->m_nOldButtons |= IN_JUMP;
return false; // in air, so no effect
}
DevMsg("Got past getGroundEntity() == NULL \n");
// Don't allow jumping when the player is in a stasis field.
#ifndef HL2_EPISODIC
@@ -2404,20 +2442,32 @@ bool CGameMovement::CheckJumpButton( void )
return false;
#endif
if ( mv->m_nOldButtons & IN_JUMP )
//pressed jump on last tick/frame and both autojump and queuejump are disabled through console.
if ( mv->m_nOldButtons & IN_JUMP && !(mv->m_bRejumpAllowed ) ) {
return false; // don't pogo stick
}
//DevMsg("Got past dont pogo \n");
// Cannot jump will in the unduck transition.
if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )
return false;
//if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )
//return false;
// Still updating the eye position.
if ( player->m_Local.m_flDuckJumpTime > 0.0f )
return false;
//if ( player->m_Local.m_flDuckJumpTime > 0.0f )
//return false;
if (pPogoStick->GetInt() == 0) {
DevMsg("rejump disabled \n");
mv->m_bRejumpAllowed = false;
}
// In the air now.
SetGroundEntity( NULL );
SetGroundEntity( NULL );
player->PlayStepSound( (Vector &)mv->GetAbsOrigin(), player->m_pSurfaceData, 1.0, true );
@@ -2432,7 +2482,7 @@ bool CGameMovement::CheckJumpButton( void )
float flMul;
if ( g_bMovementOptimizations )
{
#if defined(HL2_DLL) || defined(HL2_CLIENT_DLL)
#if defined(HL2_DLL) &!defined(SArena_DLL) || defined(HL2_CLIENT_DLL) &!defined(SArena_DLL)
Assert( GetCurrentGravity() == 600.0f );
flMul = 160.0f; // approx. 21 units.
#else
@@ -2443,7 +2493,10 @@ bool CGameMovement::CheckJumpButton( void )
}
else
{
flMul = sqrt(2 * GetCurrentGravity() * GAMEMOVEMENT_JUMP_HEIGHT);
//flMul = sqrt(2 * GetCurrentGravity() * GAMEMOVEMENT_JUMP_HEIGHT);
//We need these
Assert(GetCurrentGravity() == 800.0f);
flMul = 268.3281572999747f;
}
// Acclerate upward
@@ -2466,8 +2519,8 @@ bool CGameMovement::CheckJumpButton( void )
// Add a little forward velocity based on your current forward velocity - if you are not sprinting.
#if defined( HL2_DLL ) || defined( HL2_CLIENT_DLL )
if ( gpGlobals->maxClients == 1 )
{
//if ( gpGlobals->maxClients == 1 )
//{
CHLMoveData *pMoveData = ( CHLMoveData* )mv;
Vector vecForward;
AngleVectors( mv->m_vecViewAngles, &vecForward );
@@ -2484,7 +2537,7 @@ bool CGameMovement::CheckJumpButton( void )
// If we're over the maximum, we want to only boost as much as will get us to the goal speed
if ( flNewSpeed > flMaxSpeed )
{
flSpeedAddition -= flNewSpeed - flMaxSpeed;
//flSpeedAddition -= flNewSpeed - flMaxSpeed;
}
if ( mv->m_flForwardMove < 0.0f )
@@ -2492,7 +2545,7 @@ bool CGameMovement::CheckJumpButton( void )
// Add it on
VectorAdd( (vecForward*flSpeedAddition), mv->m_vecVelocity, mv->m_vecVelocity );
}
//}
#endif
FinishGravity();
@@ -2524,8 +2577,12 @@ bool CGameMovement::CheckJumpButton( void )
#endif
// Flag that we jumped.
mv->m_nOldButtons |= IN_JUMP; // don't jump again until released
//Commented out because idk why
else if (pPogoStick->GetInt() == 0 && pQueueJump->GetInt() == 1 && player->GetGroundEntity() != NULL) {
// Flag that we jumped.
mv->m_nOldButtons |= IN_JUMP; // don't jump again until released
}
return true;
}
@@ -2840,7 +2897,7 @@ inline bool CGameMovement::OnLadder( trace_t &trace )
// HPE_BEGIN
// [sbodenbender] make ladders easier to climb in cstrike
//=============================================================================
#if defined (CSTRIKE_DLL)
#if defined (CSTRIKE_DLL) || defined( SArena_DLL )
ConVar sv_ladder_dampen ( "sv_ladder_dampen", "0.2", FCVAR_REPLICATED, "Amount to dampen perpendicular movement on a ladder", true, 0.0f, true, 1.0f );
ConVar sv_ladder_angle( "sv_ladder_angle", "-0.707", FCVAR_REPLICATED, "Cos of angle of incidence to ladder perpendicular for applying ladder_dampen", true, -1.0f, true, 1.0f );
#endif
@@ -2977,7 +3034,7 @@ bool CGameMovement::LadderMove( void )
// HPE_BEGIN
// [sbodenbender] make ladders easier to climb in cstrike
//=============================================================================
#if defined (CSTRIKE_DLL)
#if defined (CSTRIKE_DLL) || defined( SArena_DLL )
// break lateral into direction along tmp (up the ladder) and direction along perp (perpendicular to ladder)
float tmpDist = DotProduct ( tmp, lateral );
float perpDist = DotProduct ( perp, lateral );

View File

@@ -40,6 +40,7 @@ class CMoveData
public:
bool m_bFirstRunOfFunctions : 1;
bool m_bGameCodeMovedPlayer : 1;
bool m_bRejumpAllowed = 1; //keeping track of allowed jump status SA
EntityHandle_t m_nPlayerHandle; // edict index on server, client entity handle on client

View File

@@ -16,7 +16,7 @@
#include "tier0/memdbgon.h"
// some cvars used by player movement system
#if defined( HL2_DLL ) || defined( HL2_CLIENT_DLL )
#if defined( HL2_DLL ) &! defined( SArena_DLL ) || defined( HL2_CLIENT_DLL ) &! defined( SArena_DLL )
#define DEFAULT_GRAVITY_STRING "600"
#else
#define DEFAULT_GRAVITY_STRING "800"
@@ -36,7 +36,7 @@ float GetCurrentGravity( void )
ConVar sv_gravity ( "sv_gravity", DEFAULT_GRAVITY_STRING, FCVAR_NOTIFY | FCVAR_REPLICATED, "World gravity." );
#if defined( DOD_DLL ) || defined( CSTRIKE_DLL ) || defined( HL1MP_DLL )
#if defined( DOD_DLL ) || defined( CSTRIKE_DLL ) || defined( HL1MP_DLL ) || defined( SArena_DLL )
ConVar sv_stopspeed ( "sv_stopspeed","100", FCVAR_NOTIFY | FCVAR_REPLICATED, "Minimum stopping speed when on ground." );
#else
ConVar sv_stopspeed ( "sv_stopspeed","100", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "Minimum stopping speed when on ground." );
@@ -48,7 +48,7 @@ ConVar sv_specaccelerate( "sv_specaccelerate", "5", FCVAR_NOTIFY | FCVAR_ARCHIVE
ConVar sv_specspeed ( "sv_specspeed", "3", FCVAR_ARCHIVE | FCVAR_NOTIFY | FCVAR_REPLICATED);
ConVar sv_specnoclip ( "sv_specnoclip", "1", FCVAR_ARCHIVE | FCVAR_NOTIFY | FCVAR_REPLICATED);
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL )
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL ) || defined( SArena_DLL )
ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED);
#else
ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY);
@@ -58,7 +58,7 @@ ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED | FC
ConVar sv_accelerate ( "sv_accelerate", "7", FCVAR_NOTIFY | FCVAR_REPLICATED);
#else
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL )
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL ) || defined( SArena_DLL )
ConVar sv_accelerate ( "sv_accelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED);
#else
ConVar sv_accelerate ( "sv_accelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY);
@@ -66,7 +66,7 @@ ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED | FC
#endif//_XBOX
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL )
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL ) || defined( SArena_DLL ) //we need these to not be hidden
ConVar sv_airaccelerate( "sv_airaccelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED);
ConVar sv_wateraccelerate( "sv_wateraccelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED);
ConVar sv_waterfriction( "sv_waterfriction", "1", FCVAR_NOTIFY | FCVAR_REPLICATED);
@@ -82,13 +82,13 @@ ConVar sv_rollspeed ( "sv_rollspeed", "200", FCVAR_NOTIFY | FCVAR_REPLICATED | F
ConVar sv_rollangle ( "sv_rollangle", "0", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "Max view roll angle");
#endif // CSTRIKE_DLL
#if defined( DOD_DLL ) || defined( CSTRIKE_DLL ) || defined( HL1MP_DLL )
#if defined( DOD_DLL ) || defined( CSTRIKE_DLL ) || defined( HL1MP_DLL ) || defined( SArena_DLL ) //need these too
ConVar sv_friction ( "sv_friction","4", FCVAR_NOTIFY | FCVAR_REPLICATED, "World friction." );
#else
ConVar sv_friction ( "sv_friction","4", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "World friction." );
#endif // DOD_DLL || CSTRIKE_DLL
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL )
#if defined( CSTRIKE_DLL ) || defined( HL1MP_DLL ) || defined( SArena_DLL ) //need these too
ConVar sv_bounce ( "sv_bounce","0", FCVAR_NOTIFY | FCVAR_REPLICATED, "Bounce multiplier for when physically simulated objects collide with other objects." );
ConVar sv_maxvelocity ( "sv_maxvelocity","3500", FCVAR_REPLICATED, "Maximum speed any ballistically moving object is allowed to attain per axis." );
ConVar sv_stepsize ( "sv_stepsize","18", FCVAR_NOTIFY | FCVAR_REPLICATED );

View File

@@ -2404,8 +2404,9 @@ bool CGameMovement::CheckJumpButton( void )
return false;
#endif
if ( mv->m_nOldButtons & IN_JUMP )
return false; // don't pogo stick
//if ( mv->m_nOldButtons & IN_JUMP )
//return false; // don't pogo stick
//bla
// Cannot jump will in the unduck transition.
if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )

85
sp/src/games.sln Normal file
View File

@@ -0,0 +1,85 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29102.190
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Client (HL2)", "game\client\client_hl2.vcxproj", "{09E5D61D-4897-7B98-288B-C87442D14BFF}"
ProjectSection(ProjectDependencies) = postProject
{BAB92FF0-D72A-D7E5-1988-74628D39B94F} = {BAB92FF0-D72A-D7E5-1988-74628D39B94F}
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC} = {EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}
{F69B3672-C5E8-CD1A-257F-253A25B5B939} = {F69B3672-C5E8-CD1A-257F-253A25B5B939}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Client (Episodic)", "game\client\client_episodic.vcxproj", "{353A799F-E73F-7A69-07AD-B2AD57F3B775}"
ProjectSection(ProjectDependencies) = postProject
{BAB92FF0-D72A-D7E5-1988-74628D39B94F} = {BAB92FF0-D72A-D7E5-1988-74628D39B94F}
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC} = {EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}
{F69B3672-C5E8-CD1A-257F-253A25B5B939} = {F69B3672-C5E8-CD1A-257F-253A25B5B939}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "mathlib\mathlib.vcxproj", "{BAB92FF0-D72A-D7E5-1988-74628D39B94F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Raytrace", "raytrace\raytrace.vcxproj", "{95D67225-8415-236F-9128-DCB171B7DEC6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Server (HL2)", "game\server\server_hl2.vcxproj", "{C3EE918E-6836-5578-1FA2-5703048552B9}"
ProjectSection(ProjectDependencies) = postProject
{BAB92FF0-D72A-D7E5-1988-74628D39B94F} = {BAB92FF0-D72A-D7E5-1988-74628D39B94F}
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC} = {EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Server (Episodic)", "game\server\server_episodic.vcxproj", "{7855B476-B6D4-535D-F7A9-D623245F8B07}"
ProjectSection(ProjectDependencies) = postProject
{BAB92FF0-D72A-D7E5-1988-74628D39B94F} = {BAB92FF0-D72A-D7E5-1988-74628D39B94F}
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC} = {EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tier1", "tier1\tier1.vcxproj", "{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vgui_controls", "vgui2\vgui_controls\vgui_controls.vcxproj", "{F69B3672-C5E8-CD1A-257F-253A25B5B939}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{09E5D61D-4897-7B98-288B-C87442D14BFF}.Debug|x86.ActiveCfg = Debug|Win32
{09E5D61D-4897-7B98-288B-C87442D14BFF}.Debug|x86.Build.0 = Debug|Win32
{09E5D61D-4897-7B98-288B-C87442D14BFF}.Release|x86.ActiveCfg = Release|Win32
{09E5D61D-4897-7B98-288B-C87442D14BFF}.Release|x86.Build.0 = Release|Win32
{353A799F-E73F-7A69-07AD-B2AD57F3B775}.Debug|x86.ActiveCfg = Debug|Win32
{353A799F-E73F-7A69-07AD-B2AD57F3B775}.Debug|x86.Build.0 = Debug|Win32
{353A799F-E73F-7A69-07AD-B2AD57F3B775}.Release|x86.ActiveCfg = Release|Win32
{353A799F-E73F-7A69-07AD-B2AD57F3B775}.Release|x86.Build.0 = Release|Win32
{BAB92FF0-D72A-D7E5-1988-74628D39B94F}.Debug|x86.ActiveCfg = Debug|Win32
{BAB92FF0-D72A-D7E5-1988-74628D39B94F}.Debug|x86.Build.0 = Debug|Win32
{BAB92FF0-D72A-D7E5-1988-74628D39B94F}.Release|x86.ActiveCfg = Release|Win32
{BAB92FF0-D72A-D7E5-1988-74628D39B94F}.Release|x86.Build.0 = Release|Win32
{95D67225-8415-236F-9128-DCB171B7DEC6}.Debug|x86.ActiveCfg = Debug|Win32
{95D67225-8415-236F-9128-DCB171B7DEC6}.Debug|x86.Build.0 = Debug|Win32
{95D67225-8415-236F-9128-DCB171B7DEC6}.Release|x86.ActiveCfg = Release|Win32
{95D67225-8415-236F-9128-DCB171B7DEC6}.Release|x86.Build.0 = Release|Win32
{C3EE918E-6836-5578-1FA2-5703048552B9}.Debug|x86.ActiveCfg = Debug|Win32
{C3EE918E-6836-5578-1FA2-5703048552B9}.Debug|x86.Build.0 = Debug|Win32
{C3EE918E-6836-5578-1FA2-5703048552B9}.Release|x86.ActiveCfg = Release|Win32
{C3EE918E-6836-5578-1FA2-5703048552B9}.Release|x86.Build.0 = Release|Win32
{7855B476-B6D4-535D-F7A9-D623245F8B07}.Debug|x86.ActiveCfg = Debug|Win32
{7855B476-B6D4-535D-F7A9-D623245F8B07}.Debug|x86.Build.0 = Debug|Win32
{7855B476-B6D4-535D-F7A9-D623245F8B07}.Release|x86.ActiveCfg = Release|Win32
{7855B476-B6D4-535D-F7A9-D623245F8B07}.Release|x86.Build.0 = Release|Win32
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}.Debug|x86.ActiveCfg = Debug|Win32
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}.Debug|x86.Build.0 = Debug|Win32
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}.Release|x86.ActiveCfg = Release|Win32
{EC1C516D-E1D9-BC0A-F79D-E91E954ED8EC}.Release|x86.Build.0 = Release|Win32
{F69B3672-C5E8-CD1A-257F-253A25B5B939}.Debug|x86.ActiveCfg = Debug|Win32
{F69B3672-C5E8-CD1A-257F-253A25B5B939}.Debug|x86.Build.0 = Debug|Win32
{F69B3672-C5E8-CD1A-257F-253A25B5B939}.Release|x86.ActiveCfg = Release|Win32
{F69B3672-C5E8-CD1A-257F-253A25B5B939}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {659B5A0E-7CCE-4B7B-A6E8-F54A2490E5BB}
EndGlobalSection
EndGlobal