Compare commits
33 Commits
master
...
bc62e99e62
| Author | SHA1 | Date | |
|---|---|---|---|
| bc62e99e62 | |||
| 80f130a34c | |||
| 3d6ef7d47a | |||
| 6a07992e34 | |||
| 9917083884 | |||
| 6406952e7e | |||
| 671e1b6e0a | |||
| 3ada3a07f0 | |||
| 689cce8da4 | |||
| a2faa57760 | |||
| b11cb714d6 | |||
| 13f49b388b | |||
| f82a446c00 | |||
| 3404d7f306 | |||
| 3b0319d009 | |||
| efc6c32c33 | |||
| 4dcea96189 | |||
| a6fb0e805d | |||
| aedc714659 | |||
| bcf509c5df | |||
| 22b3d26c0b | |||
| cb00ff4ff5 | |||
| e11373acbb | |||
| 380112a25f | |||
| 443c2483b0 | |||
| e4352e849f | |||
| 94b17cc130 | |||
| 4364cb87e7 | |||
| 4395aa7480 | |||
| 7365158cee | |||
| 564fe3af56 | |||
| d32393955b | |||
| 2eb7b264ba |
24
.gitignore
vendored
24
.gitignore
vendored
@@ -19,6 +19,12 @@ ipch
|
|||||||
*.idb
|
*.idb
|
||||||
*.vcxproj
|
*.vcxproj
|
||||||
*.sln
|
*.sln
|
||||||
|
*.lib
|
||||||
|
|
||||||
|
# Visual studio config dirs
|
||||||
|
.vs/*
|
||||||
|
mp/src/.vs/*
|
||||||
|
sp/src/.vs/*
|
||||||
|
|
||||||
# OSX/Linux build products
|
# OSX/Linux build products
|
||||||
*.mak
|
*.mak
|
||||||
@@ -54,3 +60,21 @@ config.cfg
|
|||||||
# shader files
|
# shader files
|
||||||
*.tmp
|
*.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
|
||||||
|
|
||||||
|
#game directories
|
||||||
|
sp/game/*
|
||||||
|
mp/game/*
|
||||||
|
|||||||
3
.vs/ProjectSettings.json
Normal file
3
.vs/ProjectSettings.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"CurrentProjectSetting": "No Configurations"
|
||||||
|
}
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
#include <KeyValues.h>
|
#include <KeyValues.h>
|
||||||
#include "hltvcamera.h"
|
#include "hltvcamera.h"
|
||||||
#ifdef TF_CLIENT_DLL
|
#ifdef TF_CLIENT_DLL
|
||||||
#include "tf_weaponbase.h"
|
#include "tf_weaponbase.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined( REPLAY_ENABLED )
|
#if defined( REPLAY_ENABLED )
|
||||||
@@ -35,39 +35,39 @@
|
|||||||
// memdbgon must be the last include file in a .cpp file!!!
|
// memdbgon must be the last include file in a .cpp file!!!
|
||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
|
|
||||||
#ifdef CSTRIKE_DLL
|
//#ifdef CSTRIKE_DLL
|
||||||
ConVar cl_righthand( "cl_righthand", "1", FCVAR_ARCHIVE, "Use right-handed view models." );
|
ConVar cl_righthand("cl_righthand", "1", FCVAR_ARCHIVE, "Use right-handed view models.");
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
#ifdef TF_CLIENT_DLL
|
#ifdef TF_CLIENT_DLL
|
||||||
ConVar cl_flipviewmodels( "cl_flipviewmodels", "0", FCVAR_USERINFO | FCVAR_ARCHIVE | FCVAR_NOT_CONNECTED, "Flip view models." );
|
ConVar cl_flipviewmodels("cl_flipviewmodels", "0", FCVAR_USERINFO | FCVAR_ARCHIVE | FCVAR_NOT_CONNECTED, "Flip view models.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void PostToolMessage( HTOOLHANDLE hEntity, KeyValues *msg );
|
void PostToolMessage(HTOOLHANDLE hEntity, KeyValues* msg);
|
||||||
|
|
||||||
void FormatViewModelAttachment( Vector &vOrigin, bool bInverse )
|
void FormatViewModelAttachment(Vector& vOrigin, bool bInverse)
|
||||||
{
|
{
|
||||||
// Presumably, SetUpView has been called so we know our FOV and render origin.
|
// Presumably, SetUpView has been called so we know our FOV and render origin.
|
||||||
const CViewSetup *pViewSetup = view->GetPlayerViewSetup();
|
const CViewSetup* pViewSetup = view->GetPlayerViewSetup();
|
||||||
|
|
||||||
float worldx = tan( pViewSetup->fov * M_PI/360.0 );
|
float worldx = tan(pViewSetup->fov * M_PI / 360.0);
|
||||||
float viewx = tan( pViewSetup->fovViewmodel * M_PI/360.0 );
|
float viewx = tan(pViewSetup->fovViewmodel * M_PI / 360.0);
|
||||||
|
|
||||||
// aspect ratio cancels out, so only need one factor
|
// aspect ratio cancels out, so only need one factor
|
||||||
// the difference between the screen coordinates of the 2 systems is the ratio
|
// the difference between the screen coordinates of the 2 systems is the ratio
|
||||||
// of the coefficients of the projection matrices (tan (fov/2) is that coefficient)
|
// of the coefficients of the projection matrices (tan (fov/2) is that coefficient)
|
||||||
// NOTE: viewx was coming in as 0 when folks set their viewmodel_fov to 0 and show their weapon.
|
// NOTE: viewx was coming in as 0 when folks set their viewmodel_fov to 0 and show their weapon.
|
||||||
float factorX = viewx ? ( worldx / viewx ) : 0.0f;
|
float factorX = viewx ? (worldx / viewx) : 0.0f;
|
||||||
float factorY = factorX;
|
float factorY = factorX;
|
||||||
|
|
||||||
// Get the coordinates in the viewer's space.
|
// Get the coordinates in the viewer's space.
|
||||||
Vector tmp = vOrigin - pViewSetup->origin;
|
Vector tmp = vOrigin - pViewSetup->origin;
|
||||||
Vector vTransformed( MainViewRight().Dot( tmp ), MainViewUp().Dot( tmp ), MainViewForward().Dot( tmp ) );
|
Vector vTransformed(MainViewRight().Dot(tmp), MainViewUp().Dot(tmp), MainViewForward().Dot(tmp));
|
||||||
|
|
||||||
// Now squash X and Y.
|
// Now squash X and Y.
|
||||||
if ( bInverse )
|
if (bInverse)
|
||||||
{
|
{
|
||||||
if ( factorX != 0 && factorY != 0 )
|
if (factorX != 0 && factorY != 0)
|
||||||
{
|
{
|
||||||
vTransformed.x /= factorX;
|
vTransformed.x /= factorX;
|
||||||
vTransformed.y /= factorY;
|
vTransformed.y /= factorY;
|
||||||
@@ -92,12 +92,12 @@ void FormatViewModelAttachment( Vector &vOrigin, bool bInverse )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void C_BaseViewModel::FormatViewModelAttachment( int nAttachment, matrix3x4_t &attachmentToWorld )
|
void C_BaseViewModel::FormatViewModelAttachment(int nAttachment, matrix3x4_t& attachmentToWorld)
|
||||||
{
|
{
|
||||||
Vector vecOrigin;
|
Vector vecOrigin;
|
||||||
MatrixPosition( attachmentToWorld, vecOrigin );
|
MatrixPosition(attachmentToWorld, vecOrigin);
|
||||||
::FormatViewModelAttachment( vecOrigin, false );
|
::FormatViewModelAttachment(vecOrigin, false);
|
||||||
PositionMatrix( vecOrigin, attachmentToWorld );
|
PositionMatrix(vecOrigin, attachmentToWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -106,110 +106,110 @@ bool C_BaseViewModel::IsViewModel() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_BaseViewModel::UncorrectViewModelAttachment( Vector &vOrigin )
|
void C_BaseViewModel::UncorrectViewModelAttachment(Vector& vOrigin)
|
||||||
{
|
{
|
||||||
// Unformat the attachment.
|
// Unformat the attachment.
|
||||||
::FormatViewModelAttachment( vOrigin, true );
|
::FormatViewModelAttachment(vOrigin, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose
|
// Purpose
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void C_BaseViewModel::FireEvent( const Vector& origin, const QAngle& angles, int event, const char *options )
|
void C_BaseViewModel::FireEvent(const Vector& origin, const QAngle& angles, int event, const char* options)
|
||||||
{
|
{
|
||||||
// We override sound requests so that we can play them locally on the owning player
|
// We override sound requests so that we can play them locally on the owning player
|
||||||
if ( ( event == AE_CL_PLAYSOUND ) || ( event == CL_EVENT_SOUND ) )
|
if ((event == AE_CL_PLAYSOUND) || (event == CL_EVENT_SOUND))
|
||||||
{
|
{
|
||||||
// Only do this if we're owned by someone
|
// Only do this if we're owned by someone
|
||||||
if ( GetOwner() != NULL )
|
if (GetOwner() != NULL)
|
||||||
{
|
{
|
||||||
CLocalPlayerFilter filter;
|
CLocalPlayerFilter filter;
|
||||||
EmitSound( filter, GetOwner()->GetSoundSourceIndex(), options, &GetAbsOrigin() );
|
EmitSound(filter, GetOwner()->GetSoundSourceIndex(), options, &GetAbsOrigin());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise pass the event to our associated weapon
|
// Otherwise pass the event to our associated weapon
|
||||||
C_BaseCombatWeapon *pWeapon = GetActiveWeapon();
|
C_BaseCombatWeapon* pWeapon = GetActiveWeapon();
|
||||||
if ( pWeapon )
|
if (pWeapon)
|
||||||
{
|
{
|
||||||
// NVNT notify the haptics system of our viewmodel's event
|
// NVNT notify the haptics system of our viewmodel's event
|
||||||
if ( haptics )
|
if (haptics)
|
||||||
haptics->ProcessHapticEvent(4,"Weapons",pWeapon->GetName(),"AnimationEvents",VarArgs("%i",event));
|
haptics->ProcessHapticEvent(4, "Weapons", pWeapon->GetName(), "AnimationEvents", VarArgs("%i", event));
|
||||||
|
|
||||||
bool bResult = pWeapon->OnFireEvent( this, origin, angles, event, options );
|
bool bResult = pWeapon->OnFireEvent(this, origin, angles, event, options);
|
||||||
if ( !bResult )
|
if (!bResult)
|
||||||
{
|
{
|
||||||
BaseClass::FireEvent( origin, angles, event, options );
|
BaseClass::FireEvent(origin, angles, event, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool C_BaseViewModel::Interpolate( float currentTime )
|
bool C_BaseViewModel::Interpolate(float currentTime)
|
||||||
{
|
{
|
||||||
CStudioHdr *pStudioHdr = GetModelPtr();
|
CStudioHdr* pStudioHdr = GetModelPtr();
|
||||||
// Make sure we reset our animation information if we've switch sequences
|
// Make sure we reset our animation information if we've switch sequences
|
||||||
UpdateAnimationParity();
|
UpdateAnimationParity();
|
||||||
|
|
||||||
bool bret = BaseClass::Interpolate( currentTime );
|
bool bret = BaseClass::Interpolate(currentTime);
|
||||||
|
|
||||||
// Hack to extrapolate cycle counter for view model
|
// Hack to extrapolate cycle counter for view model
|
||||||
float elapsed_time = currentTime - m_flAnimTime;
|
float elapsed_time = currentTime - m_flAnimTime;
|
||||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||||
|
|
||||||
// Predicted viewmodels have fixed up interval
|
// Predicted viewmodels have fixed up interval
|
||||||
if ( GetPredictable() || IsClientCreated() )
|
if (GetPredictable() || IsClientCreated())
|
||||||
{
|
{
|
||||||
Assert( pPlayer );
|
Assert(pPlayer);
|
||||||
float curtime = pPlayer ? pPlayer->GetFinalPredictedTime() : gpGlobals->curtime;
|
float curtime = pPlayer ? pPlayer->GetFinalPredictedTime() : gpGlobals->curtime;
|
||||||
elapsed_time = curtime - m_flAnimTime;
|
elapsed_time = curtime - m_flAnimTime;
|
||||||
// Adjust for interpolated partial frame
|
// Adjust for interpolated partial frame
|
||||||
if ( !engine->IsPaused() )
|
if (!engine->IsPaused())
|
||||||
{
|
{
|
||||||
elapsed_time += ( gpGlobals->interpolation_amount * TICK_INTERVAL );
|
elapsed_time += (gpGlobals->interpolation_amount * TICK_INTERVAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prediction errors?
|
// Prediction errors?
|
||||||
if ( elapsed_time < 0 )
|
if (elapsed_time < 0)
|
||||||
{
|
{
|
||||||
elapsed_time = 0;
|
elapsed_time = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float dt = elapsed_time * GetSequenceCycleRate( pStudioHdr, GetSequence() ) * GetPlaybackRate();
|
float dt = elapsed_time * GetSequenceCycleRate(pStudioHdr, GetSequence()) * GetPlaybackRate();
|
||||||
if ( dt >= 1.0f )
|
if (dt >= 1.0f)
|
||||||
{
|
{
|
||||||
if ( !IsSequenceLooping( GetSequence() ) )
|
if (!IsSequenceLooping(GetSequence()))
|
||||||
{
|
{
|
||||||
dt = 0.999f;
|
dt = 0.999f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dt = fmod( dt, 1.0f );
|
dt = fmod(dt, 1.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetCycle( dt );
|
SetCycle(dt);
|
||||||
return bret;
|
return bret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool C_BaseViewModel::ShouldFlipViewModel()
|
bool C_BaseViewModel::ShouldFlipViewModel()
|
||||||
{
|
{
|
||||||
#ifdef CSTRIKE_DLL
|
//#ifdef CSTRIKE_DLL
|
||||||
// If cl_righthand is set, then we want them all right-handed.
|
// If cl_righthand is set, then we want them all right-handed.
|
||||||
CBaseCombatWeapon *pWeapon = m_hWeapon.Get();
|
CBaseCombatWeapon* pWeapon = m_hWeapon.Get();
|
||||||
if ( pWeapon )
|
if (pWeapon)
|
||||||
{
|
{
|
||||||
const FileWeaponInfo_t *pInfo = &pWeapon->GetWpnData();
|
const FileWeaponInfo_t* pInfo = &pWeapon->GetWpnData();
|
||||||
return pInfo->m_bAllowFlipping && pInfo->m_bBuiltRightHanded != cl_righthand.GetBool();
|
return pInfo->m_bAllowFlipping && pInfo->m_bBuiltRightHanded != cl_righthand.GetBool();
|
||||||
}
|
}
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
#ifdef TF_CLIENT_DLL
|
#ifdef TF_CLIENT_DLL
|
||||||
CBaseCombatWeapon *pWeapon = m_hWeapon.Get();
|
CBaseCombatWeapon* pWeapon = m_hWeapon.Get();
|
||||||
if ( pWeapon )
|
if (pWeapon)
|
||||||
{
|
{
|
||||||
return pWeapon->m_bFlipViewModel != cl_flipviewmodels.GetBool();
|
return pWeapon->m_bFlipViewModel != cl_flipviewmodels.GetBool();
|
||||||
}
|
}
|
||||||
@@ -219,21 +219,21 @@ bool C_BaseViewModel::ShouldFlipViewModel()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void C_BaseViewModel::ApplyBoneMatrixTransform( matrix3x4_t& transform )
|
void C_BaseViewModel::ApplyBoneMatrixTransform(matrix3x4_t& transform)
|
||||||
{
|
{
|
||||||
if ( ShouldFlipViewModel() )
|
if (ShouldFlipViewModel())
|
||||||
{
|
{
|
||||||
matrix3x4_t viewMatrix, viewMatrixInverse;
|
matrix3x4_t viewMatrix, viewMatrixInverse;
|
||||||
|
|
||||||
// We could get MATERIAL_VIEW here, but this is called sometimes before the renderer
|
// We could get MATERIAL_VIEW here, but this is called sometimes before the renderer
|
||||||
// has set that matrix. Luckily, this is called AFTER the CViewSetup has been initialized.
|
// has set that matrix. Luckily, this is called AFTER the CViewSetup has been initialized.
|
||||||
const CViewSetup *pSetup = view->GetPlayerViewSetup();
|
const CViewSetup* pSetup = view->GetPlayerViewSetup();
|
||||||
AngleMatrix( pSetup->angles, pSetup->origin, viewMatrixInverse );
|
AngleMatrix(pSetup->angles, pSetup->origin, viewMatrixInverse);
|
||||||
MatrixInvert( viewMatrixInverse, viewMatrix );
|
MatrixInvert(viewMatrixInverse, viewMatrix);
|
||||||
|
|
||||||
// Transform into view space.
|
// Transform into view space.
|
||||||
matrix3x4_t temp, temp2;
|
matrix3x4_t temp, temp2;
|
||||||
ConcatTransforms( viewMatrix, transform, temp );
|
ConcatTransforms(viewMatrix, transform, temp);
|
||||||
|
|
||||||
// Flip it along X.
|
// Flip it along X.
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ void C_BaseViewModel::ApplyBoneMatrixTransform( matrix3x4_t& transform )
|
|||||||
temp[1][3] = -temp[1][3];
|
temp[1][3] = -temp[1][3];
|
||||||
|
|
||||||
// Transform back out of view space.
|
// Transform back out of view space.
|
||||||
ConcatTransforms( viewMatrixInverse, temp, transform );
|
ConcatTransforms(viewMatrixInverse, temp, transform);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,16 +259,16 @@ void C_BaseViewModel::ApplyBoneMatrixTransform( matrix3x4_t& transform )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool C_BaseViewModel::ShouldDraw()
|
bool C_BaseViewModel::ShouldDraw()
|
||||||
{
|
{
|
||||||
if ( engine->IsHLTV() )
|
if (engine->IsHLTV())
|
||||||
{
|
{
|
||||||
return ( HLTVCamera()->GetMode() == OBS_MODE_IN_EYE &&
|
return (HLTVCamera()->GetMode() == OBS_MODE_IN_EYE &&
|
||||||
HLTVCamera()->GetPrimaryTarget() == GetOwner() );
|
HLTVCamera()->GetPrimaryTarget() == GetOwner());
|
||||||
}
|
}
|
||||||
#if defined( REPLAY_ENABLED )
|
#if defined( REPLAY_ENABLED )
|
||||||
else if ( g_pEngineClientReplay->IsPlayingReplayDemo() )
|
else if (g_pEngineClientReplay->IsPlayingReplayDemo())
|
||||||
{
|
{
|
||||||
return ( ReplayCamera()->GetMode() == OBS_MODE_IN_EYE &&
|
return (ReplayCamera()->GetMode() == OBS_MODE_IN_EYE &&
|
||||||
ReplayCamera()->GetPrimaryTarget() == GetOwner() );
|
ReplayCamera()->GetPrimaryTarget() == GetOwner());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else
|
else
|
||||||
@@ -281,66 +281,66 @@ bool C_BaseViewModel::ShouldDraw()
|
|||||||
// Purpose: Render the weapon. Draw the Viewmodel if the weapon's being carried
|
// Purpose: Render the weapon. Draw the Viewmodel if the weapon's being carried
|
||||||
// by this player, otherwise draw the worldmodel.
|
// by this player, otherwise draw the worldmodel.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
int C_BaseViewModel::DrawModel( int flags )
|
int C_BaseViewModel::DrawModel(int flags)
|
||||||
{
|
{
|
||||||
if ( !m_bReadyToDraw )
|
if (!m_bReadyToDraw)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ( flags & STUDIO_RENDER )
|
if (flags & STUDIO_RENDER)
|
||||||
{
|
{
|
||||||
// Determine blending amount and tell engine
|
// Determine blending amount and tell engine
|
||||||
float blend = (float)( GetFxBlend() / 255.0f );
|
float blend = (float)(GetFxBlend() / 255.0f);
|
||||||
|
|
||||||
// Totally gone
|
// Totally gone
|
||||||
if ( blend <= 0.0f )
|
if (blend <= 0.0f)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Tell engine
|
// Tell engine
|
||||||
render->SetBlend( blend );
|
render->SetBlend(blend);
|
||||||
|
|
||||||
float color[3];
|
float color[3];
|
||||||
GetColorModulation( color );
|
GetColorModulation(color);
|
||||||
render->SetColorModulation( color );
|
render->SetColorModulation(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||||
C_BaseCombatWeapon *pWeapon = GetOwningWeapon();
|
C_BaseCombatWeapon* pWeapon = GetOwningWeapon();
|
||||||
int ret;
|
int ret;
|
||||||
// If the local player's overriding the viewmodel rendering, let him do it
|
// If the local player's overriding the viewmodel rendering, let him do it
|
||||||
if ( pPlayer && pPlayer->IsOverridingViewmodel() )
|
if (pPlayer && pPlayer->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
ret = pPlayer->DrawOverriddenViewmodel( this, flags );
|
ret = pPlayer->DrawOverriddenViewmodel(this, flags);
|
||||||
}
|
}
|
||||||
else if ( pWeapon && pWeapon->IsOverridingViewmodel() )
|
else if (pWeapon && pWeapon->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
ret = pWeapon->DrawOverriddenViewmodel( this, flags );
|
ret = pWeapon->DrawOverriddenViewmodel(this, flags);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ret = BaseClass::DrawModel( flags );
|
ret = BaseClass::DrawModel(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now that we've rendered, reset the animation restart flag
|
// Now that we've rendered, reset the animation restart flag
|
||||||
if ( flags & STUDIO_RENDER )
|
if (flags & STUDIO_RENDER)
|
||||||
{
|
{
|
||||||
if ( m_nOldAnimationParity != m_nAnimationParity )
|
if (m_nOldAnimationParity != m_nAnimationParity)
|
||||||
{
|
{
|
||||||
m_nOldAnimationParity = m_nAnimationParity;
|
m_nOldAnimationParity = m_nAnimationParity;
|
||||||
}
|
}
|
||||||
// Tell the weapon itself that we've rendered, in case it wants to do something
|
// Tell the weapon itself that we've rendered, in case it wants to do something
|
||||||
if ( pWeapon )
|
if (pWeapon)
|
||||||
{
|
{
|
||||||
pWeapon->ViewModelDrawn( this );
|
pWeapon->ViewModelDrawn(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TF_CLIENT_DLL
|
#ifdef TF_CLIENT_DLL
|
||||||
CTFWeaponBase* pTFWeapon = dynamic_cast<CTFWeaponBase*>( pWeapon );
|
CTFWeaponBase* pTFWeapon = dynamic_cast<CTFWeaponBase*>(pWeapon);
|
||||||
if ( ( flags & STUDIO_RENDER ) && pTFWeapon && pTFWeapon->m_viewmodelStatTrakAddon )
|
if ((flags & STUDIO_RENDER) && pTFWeapon && pTFWeapon->m_viewmodelStatTrakAddon)
|
||||||
{
|
{
|
||||||
pTFWeapon->m_viewmodelStatTrakAddon->RemoveEffects( EF_NODRAW );
|
pTFWeapon->m_viewmodelStatTrakAddon->RemoveEffects(EF_NODRAW);
|
||||||
pTFWeapon->m_viewmodelStatTrakAddon->DrawModel( flags );
|
pTFWeapon->m_viewmodelStatTrakAddon->DrawModel(flags);
|
||||||
pTFWeapon->m_viewmodelStatTrakAddon->AddEffects( EF_NODRAW );
|
pTFWeapon->m_viewmodelStatTrakAddon->AddEffects(EF_NODRAW);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -350,15 +350,15 @@ int C_BaseViewModel::DrawModel( int flags )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
int C_BaseViewModel::InternalDrawModel( int flags )
|
int C_BaseViewModel::InternalDrawModel(int flags)
|
||||||
{
|
{
|
||||||
CMatRenderContextPtr pRenderContext( materials );
|
CMatRenderContextPtr pRenderContext(materials);
|
||||||
if ( ShouldFlipViewModel() )
|
if (ShouldFlipViewModel())
|
||||||
pRenderContext->CullMode( MATERIAL_CULLMODE_CW );
|
pRenderContext->CullMode(MATERIAL_CULLMODE_CW);
|
||||||
|
|
||||||
int ret = BaseClass::InternalDrawModel( flags );
|
int ret = BaseClass::InternalDrawModel(flags);
|
||||||
|
|
||||||
pRenderContext->CullMode( MATERIAL_CULLMODE_CCW );
|
pRenderContext->CullMode(MATERIAL_CULLMODE_CCW);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -366,27 +366,27 @@ int C_BaseViewModel::InternalDrawModel( int flags )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: Called by the player when the player's overriding the viewmodel drawing. Avoids infinite recursion.
|
// Purpose: Called by the player when the player's overriding the viewmodel drawing. Avoids infinite recursion.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
int C_BaseViewModel::DrawOverriddenViewmodel( int flags )
|
int C_BaseViewModel::DrawOverriddenViewmodel(int flags)
|
||||||
{
|
{
|
||||||
return BaseClass::DrawModel( flags );
|
return BaseClass::DrawModel(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
// Output : int
|
// Output : int
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
int C_BaseViewModel::GetFxBlend( void )
|
int C_BaseViewModel::GetFxBlend(void)
|
||||||
{
|
{
|
||||||
// See if the local player wants to override the viewmodel's rendering
|
// See if the local player wants to override the viewmodel's rendering
|
||||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||||
if ( pPlayer && pPlayer->IsOverridingViewmodel() )
|
if (pPlayer && pPlayer->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
pPlayer->ComputeFxBlend();
|
pPlayer->ComputeFxBlend();
|
||||||
return pPlayer->GetFxBlend();
|
return pPlayer->GetFxBlend();
|
||||||
}
|
}
|
||||||
|
|
||||||
C_BaseCombatWeapon *pWeapon = GetOwningWeapon();
|
C_BaseCombatWeapon* pWeapon = GetOwningWeapon();
|
||||||
if ( pWeapon && pWeapon->IsOverridingViewmodel() )
|
if (pWeapon && pWeapon->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
pWeapon->ComputeFxBlend();
|
pWeapon->ComputeFxBlend();
|
||||||
return pWeapon->GetFxBlend();
|
return pWeapon->GetFxBlend();
|
||||||
@@ -399,17 +399,17 @@ int C_BaseViewModel::GetFxBlend( void )
|
|||||||
// Purpose:
|
// Purpose:
|
||||||
// Output : Returns true on success, false on failure.
|
// Output : Returns true on success, false on failure.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool C_BaseViewModel::IsTransparent( void )
|
bool C_BaseViewModel::IsTransparent(void)
|
||||||
{
|
{
|
||||||
// See if the local player wants to override the viewmodel's rendering
|
// See if the local player wants to override the viewmodel's rendering
|
||||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||||
if ( pPlayer && pPlayer->IsOverridingViewmodel() )
|
if (pPlayer && pPlayer->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
return pPlayer->ViewModel_IsTransparent();
|
return pPlayer->ViewModel_IsTransparent();
|
||||||
}
|
}
|
||||||
|
|
||||||
C_BaseCombatWeapon *pWeapon = GetOwningWeapon();
|
C_BaseCombatWeapon* pWeapon = GetOwningWeapon();
|
||||||
if ( pWeapon && pWeapon->IsOverridingViewmodel() )
|
if (pWeapon && pWeapon->IsOverridingViewmodel())
|
||||||
return pWeapon->ViewModel_IsTransparent();
|
return pWeapon->ViewModel_IsTransparent();
|
||||||
|
|
||||||
return BaseClass::IsTransparent();
|
return BaseClass::IsTransparent();
|
||||||
@@ -418,17 +418,17 @@ bool C_BaseViewModel::IsTransparent( void )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool C_BaseViewModel::UsesPowerOfTwoFrameBufferTexture( void )
|
bool C_BaseViewModel::UsesPowerOfTwoFrameBufferTexture(void)
|
||||||
{
|
{
|
||||||
// See if the local player wants to override the viewmodel's rendering
|
// See if the local player wants to override the viewmodel's rendering
|
||||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||||
if ( pPlayer && pPlayer->IsOverridingViewmodel() )
|
if (pPlayer && pPlayer->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
return pPlayer->ViewModel_IsUsingFBTexture();
|
return pPlayer->ViewModel_IsUsingFBTexture();
|
||||||
}
|
}
|
||||||
|
|
||||||
C_BaseCombatWeapon *pWeapon = GetOwningWeapon();
|
C_BaseCombatWeapon* pWeapon = GetOwningWeapon();
|
||||||
if ( pWeapon && pWeapon->IsOverridingViewmodel() )
|
if (pWeapon && pWeapon->IsOverridingViewmodel())
|
||||||
{
|
{
|
||||||
return pWeapon->ViewModel_IsUsingFBTexture();
|
return pWeapon->ViewModel_IsUsingFBTexture();
|
||||||
}
|
}
|
||||||
@@ -439,20 +439,20 @@ bool C_BaseViewModel::UsesPowerOfTwoFrameBufferTexture( void )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: If the animation parity of the weapon has changed, we reset cycle to avoid popping
|
// Purpose: If the animation parity of the weapon has changed, we reset cycle to avoid popping
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void C_BaseViewModel::UpdateAnimationParity( void )
|
void C_BaseViewModel::UpdateAnimationParity(void)
|
||||||
{
|
{
|
||||||
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
|
C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer();
|
||||||
|
|
||||||
// If we're predicting, then we don't use animation parity because we change the animations on the clientside
|
// If we're predicting, then we don't use animation parity because we change the animations on the clientside
|
||||||
// while predicting. When not predicting, only the server changes the animations, so a parity mismatch
|
// while predicting. When not predicting, only the server changes the animations, so a parity mismatch
|
||||||
// tells us if we need to reset the animation.
|
// tells us if we need to reset the animation.
|
||||||
if ( m_nOldAnimationParity != m_nAnimationParity && !GetPredictable() )
|
if (m_nOldAnimationParity != m_nAnimationParity && !GetPredictable())
|
||||||
{
|
{
|
||||||
float curtime = (pPlayer && IsIntermediateDataAllocated()) ? pPlayer->GetFinalPredictedTime() : gpGlobals->curtime;
|
float curtime = (pPlayer && IsIntermediateDataAllocated()) ? pPlayer->GetFinalPredictedTime() : gpGlobals->curtime;
|
||||||
// FIXME: this is bad
|
// FIXME: this is bad
|
||||||
// Simulate a networked m_flAnimTime and m_flCycle
|
// Simulate a networked m_flAnimTime and m_flCycle
|
||||||
// FIXME: Do we need the magic 0.1?
|
// FIXME: Do we need the magic 0.1?
|
||||||
SetCycle( 0.0f ); // GetSequenceCycleRate( GetSequence() ) * 0.1;
|
SetCycle(0.0f); // GetSequenceCycleRate( GetSequence() ) * 0.1;
|
||||||
m_flAnimTime = curtime;
|
m_flAnimTime = curtime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -461,26 +461,26 @@ void C_BaseViewModel::UpdateAnimationParity( void )
|
|||||||
// Purpose: Update global map state based on data received
|
// Purpose: Update global map state based on data received
|
||||||
// Input : bnewentity -
|
// Input : bnewentity -
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void C_BaseViewModel::OnDataChanged( DataUpdateType_t updateType )
|
void C_BaseViewModel::OnDataChanged(DataUpdateType_t updateType)
|
||||||
{
|
{
|
||||||
SetPredictionEligible( true );
|
SetPredictionEligible(true);
|
||||||
BaseClass::OnDataChanged(updateType);
|
BaseClass::OnDataChanged(updateType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_BaseViewModel::PostDataUpdate( DataUpdateType_t updateType )
|
void C_BaseViewModel::PostDataUpdate(DataUpdateType_t updateType)
|
||||||
{
|
{
|
||||||
BaseClass::PostDataUpdate(updateType);
|
BaseClass::PostDataUpdate(updateType);
|
||||||
OnLatchInterpolatedVariables( LATCH_ANIMATION_VAR );
|
OnLatchInterpolatedVariables(LATCH_ANIMATION_VAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: Add entity to visible view models list
|
// Purpose: Add entity to visible view models list
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void C_BaseViewModel::AddEntity( void )
|
void C_BaseViewModel::AddEntity(void)
|
||||||
{
|
{
|
||||||
// Server says don't interpolate this frame, so set previous info to new info.
|
// Server says don't interpolate this frame, so set previous info to new info.
|
||||||
if ( IsNoInterpolationFrame() )
|
if (IsNoInterpolationFrame())
|
||||||
{
|
{
|
||||||
ResetLatched();
|
ResetLatched();
|
||||||
}
|
}
|
||||||
@@ -491,13 +491,13 @@ void C_BaseViewModel::AddEntity( void )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void C_BaseViewModel::GetBoneControllers(float controllers[MAXSTUDIOBONECTRLS])
|
void C_BaseViewModel::GetBoneControllers(float controllers[MAXSTUDIOBONECTRLS])
|
||||||
{
|
{
|
||||||
BaseClass::GetBoneControllers( controllers );
|
BaseClass::GetBoneControllers(controllers);
|
||||||
|
|
||||||
// Tell the weapon itself that we've rendered, in case it wants to do something
|
// Tell the weapon itself that we've rendered, in case it wants to do something
|
||||||
C_BaseCombatWeapon *pWeapon = GetActiveWeapon();
|
C_BaseCombatWeapon* pWeapon = GetActiveWeapon();
|
||||||
if ( pWeapon )
|
if (pWeapon)
|
||||||
{
|
{
|
||||||
pWeapon->GetViewmodelBoneControllers( this, controllers );
|
pWeapon->GetViewmodelBoneControllers(this, controllers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
extern bool g_bRollingCredits;
|
extern bool g_bRollingCredits;
|
||||||
|
|
||||||
ConVar fov_desired( "fov_desired", "75", FCVAR_ARCHIVE | FCVAR_USERINFO, "Sets the base field-of-view.", true, 75.0, true, 90.0 );
|
ConVar fov_desired( "fov_desired", "75", FCVAR_ARCHIVE | FCVAR_USERINFO, "Sets the base field-of-view.", true, 75.0, true, 140.0 );
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Globals
|
// Globals
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ static ConVar v_centerspeed( "v_centerspeed","500" );
|
|||||||
// and motions look the most natural.
|
// and motions look the most natural.
|
||||||
ConVar v_viewmodel_fov( "viewmodel_fov", "54", FCVAR_ARCHIVE, "Sets the field-of-view for the viewmodel.", true, 0.1, true, 179.9 );
|
ConVar v_viewmodel_fov( "viewmodel_fov", "54", FCVAR_ARCHIVE, "Sets the field-of-view for the viewmodel.", true, 0.1, true, 179.9 );
|
||||||
#else
|
#else
|
||||||
ConVar v_viewmodel_fov( "viewmodel_fov", "54", FCVAR_CHEAT, "Sets the field-of-view for the viewmodel.", true, 0.1, true, 179.9 );
|
ConVar v_viewmodel_fov( "viewmodel_fov", "68", FCVAR_ARCHIVE, "Sets the field-of-view for the viewmodel.", true, 0.1, true, 179.9 );
|
||||||
#endif
|
#endif
|
||||||
ConVar mat_viewportscale( "mat_viewportscale", "1.0", FCVAR_ARCHIVE, "Scale down the main viewport (to reduce GPU impact on CPU profiling)", true, (1.0f / 640.0f), true, 1.0f );
|
ConVar mat_viewportscale( "mat_viewportscale", "1.0", FCVAR_ARCHIVE, "Scale down the main viewport (to reduce GPU impact on CPU profiling)", true, (1.0f / 640.0f), true, 1.0f );
|
||||||
ConVar mat_viewportupscale( "mat_viewportupscale", "1", FCVAR_ARCHIVE, "Scale the viewport back up" );
|
ConVar mat_viewportupscale( "mat_viewportupscale", "1", FCVAR_ARCHIVE, "Scale the viewport back up" );
|
||||||
@@ -1125,11 +1125,13 @@ void CViewRender::Render( vrect_t *rect )
|
|||||||
|
|
||||||
static ConVarRef sv_restrict_aspect_ratio_fov( "sv_restrict_aspect_ratio_fov" );
|
static ConVarRef sv_restrict_aspect_ratio_fov( "sv_restrict_aspect_ratio_fov" );
|
||||||
float aspectRatio = engine->GetScreenAspectRatio() * 0.75f; // / (4/3)
|
float aspectRatio = engine->GetScreenAspectRatio() * 0.75f; // / (4/3)
|
||||||
|
|
||||||
|
|
||||||
float limitedAspectRatio = aspectRatio;
|
float limitedAspectRatio = aspectRatio;
|
||||||
if ( ( sv_restrict_aspect_ratio_fov.GetInt() > 0 && engine->IsWindowedMode() && gpGlobals->maxClients > 1 ) ||
|
if ( ( sv_restrict_aspect_ratio_fov.GetInt() > 0 && engine->IsWindowedMode() && gpGlobals->maxClients > 1 ) ||
|
||||||
sv_restrict_aspect_ratio_fov.GetInt() == 2 )
|
sv_restrict_aspect_ratio_fov.GetInt() == 2 )
|
||||||
{
|
{
|
||||||
limitedAspectRatio = MIN( aspectRatio, 1.85f * 0.75f ); // cap out the FOV advantage at a 1.85:1 ratio (about the widest any legit user should be)
|
limitedAspectRatio = MIN( aspectRatio, 1.85f * 1.75f ); // cap out the FOV advantage at a 1.85:1 ratio (about the widest any legit user should be)
|
||||||
}
|
}
|
||||||
|
|
||||||
view.fov = ScaleFOVByWidthRatio( view.fov, limitedAspectRatio );
|
view.fov = ScaleFOVByWidthRatio( view.fov, limitedAspectRatio );
|
||||||
|
|||||||
@@ -900,10 +900,11 @@ CON_COMMAND( give, "Give item to player.\n\tArguments: <item_name>" )
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
CON_COMMAND( fov, "Change players FOV" )
|
CON_COMMAND( fov, "Change players FOV" ) //this is the "Fov" command
|
||||||
{
|
{
|
||||||
CBasePlayer *pPlayer = ToBasePlayer( UTIL_GetCommandClient() );
|
CBasePlayer *pPlayer = ToBasePlayer( UTIL_GetCommandClient() );
|
||||||
if ( pPlayer && sv_cheats->GetBool() )
|
//if ( pPlayer && sv_cheats->GetBool() )
|
||||||
|
if ( pPlayer )
|
||||||
{
|
{
|
||||||
if ( args.ArgC() > 1 )
|
if ( args.ArgC() > 1 )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -36,6 +36,14 @@ extern IFileSystem *filesystem;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef SA_MOVEMENT
|
||||||
|
#define SA_MOVEMENT
|
||||||
|
#endif
|
||||||
|
ConVar sa_sv_pogostick("sv_pogostick", "1", FCVAR_REPLICATED, "queue jumps", 1, 0, 1, 1);
|
||||||
|
ConVar sa_sv_queuejump("sv_queuejump", "0", FCVAR_REPLICATED, "auto bunny hopping", 1, 0, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// tickcount currently isn't set during prediction, although gpGlobals->curtime and
|
// tickcount currently isn't set during prediction, although gpGlobals->curtime and
|
||||||
// gpGlobals->frametime are. We should probably set tickcount (to player->m_nTickBase),
|
// 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
|
// 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
|
#endif
|
||||||
|
|
||||||
// [MD] I'll remove this eventually. For now, I want the ability to A/B the optimizations.
|
// [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.
|
// 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.
|
// We don't need to do this very often.
|
||||||
@@ -1199,6 +1207,14 @@ void CGameMovement::FinishTrackPredictionErrors( CBasePlayer *pPlayer )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void CGameMovement::FinishMove( void )
|
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;
|
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:
|
// Purpose:
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -1915,6 +1937,16 @@ void CGameMovement::WalkMove( void )
|
|||||||
fmove = mv->m_flForwardMove;
|
fmove = mv->m_flForwardMove;
|
||||||
smove = mv->m_flSideMove;
|
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
|
// Zero out z components of movement vectors
|
||||||
if ( g_bMovementOptimizations )
|
if ( g_bMovementOptimizations )
|
||||||
{
|
{
|
||||||
@@ -2075,6 +2107,7 @@ void CGameMovement::FullWalkMove( )
|
|||||||
if ( player->GetGroundEntity() != NULL )
|
if ( player->GetGroundEntity() != NULL )
|
||||||
{
|
{
|
||||||
mv->m_vecVelocity[2] = 0;
|
mv->m_vecVelocity[2] = 0;
|
||||||
|
mv->m_bRejumpAllowed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2353,6 +2386,9 @@ void CGameMovement::PlaySwimSound()
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool CGameMovement::CheckJumpButton( void )
|
bool CGameMovement::CheckJumpButton( void )
|
||||||
{
|
{
|
||||||
|
ConVar* pPogoStick = cvar->FindVar("sv_pogostick");
|
||||||
|
ConVar* pQueueJump = cvar->FindVar("sv_queuejump");
|
||||||
|
|
||||||
if (player->pl.deadflag)
|
if (player->pl.deadflag)
|
||||||
{
|
{
|
||||||
mv->m_nOldButtons |= IN_JUMP ; // don't jump again until released
|
mv->m_nOldButtons |= IN_JUMP ; // don't jump again until released
|
||||||
@@ -2392,11 +2428,13 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// No more effect
|
// 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
|
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.
|
// Don't allow jumping when the player is in a stasis field.
|
||||||
#ifndef HL2_EPISODIC
|
#ifndef HL2_EPISODIC
|
||||||
@@ -2404,20 +2442,32 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
return false;
|
return false;
|
||||||
#endif
|
#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
|
return false; // don't pogo stick
|
||||||
|
|
||||||
|
}
|
||||||
|
//DevMsg("Got past dont pogo \n");
|
||||||
// Cannot jump will in the unduck transition.
|
// Cannot jump will in the unduck transition.
|
||||||
if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )
|
//if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )
|
||||||
return false;
|
//return false;
|
||||||
|
|
||||||
// Still updating the eye position.
|
// Still updating the eye position.
|
||||||
if ( player->m_Local.m_flDuckJumpTime > 0.0f )
|
//if ( player->m_Local.m_flDuckJumpTime > 0.0f )
|
||||||
return false;
|
//return false;
|
||||||
|
|
||||||
|
|
||||||
|
if (pPogoStick->GetInt() == 0) {
|
||||||
|
DevMsg("rejump disabled \n");
|
||||||
|
mv->m_bRejumpAllowed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// In the air now.
|
// In the air now.
|
||||||
SetGroundEntity( NULL );
|
SetGroundEntity( NULL );
|
||||||
|
|
||||||
player->PlayStepSound( (Vector &)mv->GetAbsOrigin(), player->m_pSurfaceData, 1.0, true );
|
player->PlayStepSound( (Vector &)mv->GetAbsOrigin(), player->m_pSurfaceData, 1.0, true );
|
||||||
|
|
||||||
@@ -2432,7 +2482,7 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
float flMul;
|
float flMul;
|
||||||
if ( g_bMovementOptimizations )
|
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 );
|
Assert( GetCurrentGravity() == 600.0f );
|
||||||
flMul = 160.0f; // approx. 21 units.
|
flMul = 160.0f; // approx. 21 units.
|
||||||
#else
|
#else
|
||||||
@@ -2443,7 +2493,10 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
}
|
}
|
||||||
else
|
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
|
// 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.
|
// 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 defined( HL2_DLL ) || defined( HL2_CLIENT_DLL )
|
||||||
if ( gpGlobals->maxClients == 1 )
|
//if ( gpGlobals->maxClients == 1 )
|
||||||
{
|
//{
|
||||||
CHLMoveData *pMoveData = ( CHLMoveData* )mv;
|
CHLMoveData *pMoveData = ( CHLMoveData* )mv;
|
||||||
Vector vecForward;
|
Vector vecForward;
|
||||||
AngleVectors( mv->m_vecViewAngles, &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 we're over the maximum, we want to only boost as much as will get us to the goal speed
|
||||||
if ( flNewSpeed > flMaxSpeed )
|
if ( flNewSpeed > flMaxSpeed )
|
||||||
{
|
{
|
||||||
flSpeedAddition -= flNewSpeed - flMaxSpeed;
|
//flSpeedAddition -= flNewSpeed - flMaxSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( mv->m_flForwardMove < 0.0f )
|
if ( mv->m_flForwardMove < 0.0f )
|
||||||
@@ -2492,7 +2545,7 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
|
|
||||||
// Add it on
|
// Add it on
|
||||||
VectorAdd( (vecForward*flSpeedAddition), mv->m_vecVelocity, mv->m_vecVelocity );
|
VectorAdd( (vecForward*flSpeedAddition), mv->m_vecVelocity, mv->m_vecVelocity );
|
||||||
}
|
//}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FinishGravity();
|
FinishGravity();
|
||||||
@@ -2524,8 +2577,12 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Flag that we jumped.
|
//Commented out because idk why
|
||||||
mv->m_nOldButtons |= IN_JUMP; // don't jump again until released
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2840,7 +2897,7 @@ inline bool CGameMovement::OnLadder( trace_t &trace )
|
|||||||
// HPE_BEGIN
|
// HPE_BEGIN
|
||||||
// [sbodenbender] make ladders easier to climb in cstrike
|
// [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_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 );
|
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
|
#endif
|
||||||
@@ -2977,7 +3034,7 @@ bool CGameMovement::LadderMove( void )
|
|||||||
// HPE_BEGIN
|
// HPE_BEGIN
|
||||||
// [sbodenbender] make ladders easier to climb in cstrike
|
// [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)
|
// break lateral into direction along tmp (up the ladder) and direction along perp (perpendicular to ladder)
|
||||||
float tmpDist = DotProduct ( tmp, lateral );
|
float tmpDist = DotProduct ( tmp, lateral );
|
||||||
float perpDist = DotProduct ( perp, lateral );
|
float perpDist = DotProduct ( perp, lateral );
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ public:
|
|||||||
virtual CBaseCombatWeapon *GetNextBestWeapon( CBaseCombatCharacter *pPlayer, CBaseCombatWeapon *pCurrentWeapon ); // I can't use this weapon anymore, get me the next best one.
|
virtual CBaseCombatWeapon *GetNextBestWeapon( CBaseCombatCharacter *pPlayer, CBaseCombatWeapon *pCurrentWeapon ); // I can't use this weapon anymore, get me the next best one.
|
||||||
virtual bool ShouldCollide( int collisionGroup0, int collisionGroup1 );
|
virtual bool ShouldCollide( int collisionGroup0, int collisionGroup1 );
|
||||||
|
|
||||||
virtual int DefaultFOV( void ) { return 90; }
|
virtual int DefaultFOV( void ) { return 100; }
|
||||||
|
|
||||||
// This function is here for our CNetworkVars.
|
// This function is here for our CNetworkVars.
|
||||||
inline void NetworkStateChanged()
|
inline void NetworkStateChanged()
|
||||||
|
|||||||
@@ -1,3 +1,20 @@
|
|||||||
|
//========= Copyright © 1996-2010, Valve Corporation, All rights reserved. ============//
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
//=============================================================================//
|
||||||
|
#include "cbase.h"
|
||||||
|
#include "gamemovement.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Expose our interface.
|
||||||
|
static CGameMovement g_GameMovement;
|
||||||
|
IGameMovement *g_pGameMovement = (IGameMovement *)&g_GameMovement;
|
||||||
|
|
||||||
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CGameMovement, IGameMovement, INTERFACENAME_GAMEMOVEMENT, g_GameMovement);
|
||||||
|
|
||||||
|
/*
|
||||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||||
//
|
//
|
||||||
// Purpose: Special handling for hl2 usable ladders
|
// Purpose: Special handling for hl2 usable ladders
|
||||||
@@ -142,6 +159,7 @@ LINK_ENTITY_TO_CLASS( reserved_spot, CReservePlayerSpot );
|
|||||||
// goalpos -
|
// goalpos -
|
||||||
// *ladder -
|
// *ladder -
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void CHL2GameMovement::StartForcedMove( bool mounting, float transit_speed, const Vector& goalpos, CFuncLadder *ladder )
|
void CHL2GameMovement::StartForcedMove( bool mounting, float transit_speed, const Vector& goalpos, CFuncLadder *ladder )
|
||||||
{
|
{
|
||||||
LadderMove_t* lm = GetLadderMove();
|
LadderMove_t* lm = GetLadderMove();
|
||||||
@@ -522,7 +540,7 @@ bool CHL2GameMovement::ExitLadderViaDismountNode( CFuncLadder *ladder, bool stri
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void CHL2GameMovement::FullLadderMove()
|
void CHL2GameMovement::FullLadderMove()
|
||||||
{
|
{
|
||||||
#if !defined( CLIENT_DLL )
|
//#if !defined( CLIENT_DLL )
|
||||||
CFuncLadder *ladder = GetLadder();
|
CFuncLadder *ladder = GetLadder();
|
||||||
Assert( ladder );
|
Assert( ladder );
|
||||||
if ( !ladder )
|
if ( !ladder )
|
||||||
@@ -701,7 +719,7 @@ void CHL2GameMovement::FullLadderMove()
|
|||||||
mv->SetAbsOrigin( oldOrigin );
|
mv->SetAbsOrigin( oldOrigin );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHL2GameMovement::CheckLadderAutoMountEndPoint( CFuncLadder *ladder, const Vector& bestOrigin )
|
bool CHL2GameMovement::CheckLadderAutoMountEndPoint( CFuncLadder *ladder, const Vector& bestOrigin )
|
||||||
@@ -1150,3 +1168,4 @@ bool CHL2GameMovement::CanAccelerate()
|
|||||||
|
|
||||||
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CGameMovement, IGameMovement,INTERFACENAME_GAMEMOVEMENT, g_GameMovement );
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CGameMovement, IGameMovement,INTERFACENAME_GAMEMOVEMENT, g_GameMovement );
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/*
|
||||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||||
//
|
//
|
||||||
// Purpose: Special handling for hl2 usable ladders
|
// Purpose: Special handling for hl2 usable ladders
|
||||||
@@ -127,3 +128,4 @@ inline CFuncLadder *CHL2GameMovement::GetLadder()
|
|||||||
{
|
{
|
||||||
return static_cast<CFuncLadder*>( static_cast<CBaseEntity *>( GetHL2Player()->m_HL2Local.m_hLadder.Get() ) );
|
return static_cast<CFuncLadder*>( static_cast<CBaseEntity *>( GetHL2Player()->m_HL2Local.m_hLadder.Get() ) );
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@@ -40,6 +40,7 @@ class CMoveData
|
|||||||
public:
|
public:
|
||||||
bool m_bFirstRunOfFunctions : 1;
|
bool m_bFirstRunOfFunctions : 1;
|
||||||
bool m_bGameCodeMovedPlayer : 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
|
EntityHandle_t m_nPlayerHandle; // edict index on server, client entity handle on client
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
|
|
||||||
// some cvars used by player movement system
|
// 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"
|
#define DEFAULT_GRAVITY_STRING "600"
|
||||||
#else
|
#else
|
||||||
#define DEFAULT_GRAVITY_STRING "800"
|
#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." );
|
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." );
|
ConVar sv_stopspeed ( "sv_stopspeed","100", FCVAR_NOTIFY | FCVAR_REPLICATED, "Minimum stopping speed when on ground." );
|
||||||
#else
|
#else
|
||||||
ConVar sv_stopspeed ( "sv_stopspeed","100", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "Minimum stopping speed when on ground." );
|
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_specspeed ( "sv_specspeed", "3", FCVAR_ARCHIVE | FCVAR_NOTIFY | FCVAR_REPLICATED);
|
||||||
ConVar sv_specnoclip ( "sv_specnoclip", "1", 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);
|
ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED);
|
||||||
#else
|
#else
|
||||||
ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY);
|
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);
|
ConVar sv_accelerate ( "sv_accelerate", "7", FCVAR_NOTIFY | FCVAR_REPLICATED);
|
||||||
#else
|
#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);
|
ConVar sv_accelerate ( "sv_accelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED);
|
||||||
#else
|
#else
|
||||||
ConVar sv_accelerate ( "sv_accelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY);
|
ConVar sv_accelerate ( "sv_accelerate", "10", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY);
|
||||||
@@ -66,8 +66,8 @@ ConVar sv_maxspeed ( "sv_maxspeed", "320", FCVAR_NOTIFY | FCVAR_REPLICATED | FC
|
|||||||
|
|
||||||
#endif//_XBOX
|
#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_airaccelerate( "sv_airaccelerate", "100", FCVAR_NOTIFY | FCVAR_REPLICATED);
|
||||||
ConVar sv_wateraccelerate( "sv_wateraccelerate", "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);
|
ConVar sv_waterfriction( "sv_waterfriction", "1", FCVAR_NOTIFY | FCVAR_REPLICATED);
|
||||||
ConVar sv_footsteps ( "sv_footsteps", "1", FCVAR_NOTIFY | FCVAR_REPLICATED, "Play footstep sound for players" );
|
ConVar sv_footsteps ( "sv_footsteps", "1", FCVAR_NOTIFY | FCVAR_REPLICATED, "Play footstep sound for players" );
|
||||||
@@ -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");
|
ConVar sv_rollangle ( "sv_rollangle", "0", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "Max view roll angle");
|
||||||
#endif // CSTRIKE_DLL
|
#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." );
|
ConVar sv_friction ( "sv_friction","4", FCVAR_NOTIFY | FCVAR_REPLICATED, "World friction." );
|
||||||
#else
|
#else
|
||||||
ConVar sv_friction ( "sv_friction","4", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "World friction." );
|
ConVar sv_friction ( "sv_friction","4", FCVAR_NOTIFY | FCVAR_REPLICATED | FCVAR_DEVELOPMENTONLY, "World friction." );
|
||||||
#endif // DOD_DLL || CSTRIKE_DLL
|
#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_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_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 );
|
ConVar sv_stepsize ( "sv_stepsize","18", FCVAR_NOTIFY | FCVAR_REPLICATED );
|
||||||
|
|||||||
@@ -628,7 +628,8 @@ ConVarRef suitcharger( "sk_suitcharger" );
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case 0:// fixed
|
case 0:// fixed
|
||||||
return 10;
|
//return 10;
|
||||||
|
return 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ enum CastVote
|
|||||||
|
|
||||||
#define MAX_PLACE_NAME_LENGTH 18
|
#define MAX_PLACE_NAME_LENGTH 18
|
||||||
|
|
||||||
#define MAX_FOV 90
|
#define MAX_FOV 140 //Max fov
|
||||||
|
|
||||||
//===================================================================================================================
|
//===================================================================================================================
|
||||||
// Team Defines
|
// Team Defines
|
||||||
|
|||||||
64
mp/src/games.sln
Normal file
64
mp/src/games.sln
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.29201.188
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Client (HL2MP)", "game\client\client_hl2mp.vcxproj", "{17BCE59A-9037-EC8D-433E-F81339E2F1BA}"
|
||||||
|
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 (HL2MP)", "game\server\server_hl2mp.vcxproj", "{33B7DFDC-BECB-3678-1190-6C951E393EB3}"
|
||||||
|
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
|
||||||
|
{17BCE59A-9037-EC8D-433E-F81339E2F1BA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{17BCE59A-9037-EC8D-433E-F81339E2F1BA}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{17BCE59A-9037-EC8D-433E-F81339E2F1BA}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{17BCE59A-9037-EC8D-433E-F81339E2F1BA}.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
|
||||||
|
{33B7DFDC-BECB-3678-1190-6C951E393EB3}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{33B7DFDC-BECB-3678-1190-6C951E393EB3}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{33B7DFDC-BECB-3678-1190-6C951E393EB3}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{33B7DFDC-BECB-3678-1190-6C951E393EB3}.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 = {1D78039F-6074-40C4-8237-C7B4C2D01F18}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -2404,8 +2404,9 @@ bool CGameMovement::CheckJumpButton( void )
|
|||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( mv->m_nOldButtons & IN_JUMP )
|
//if ( mv->m_nOldButtons & IN_JUMP )
|
||||||
return false; // don't pogo stick
|
//return false; // don't pogo stick
|
||||||
|
//bla
|
||||||
|
|
||||||
// Cannot jump will in the unduck transition.
|
// Cannot jump will in the unduck transition.
|
||||||
if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )
|
if ( player->m_Local.m_bDucking && ( player->GetFlags() & FL_DUCKING ) )
|
||||||
|
|||||||
85
sp/src/games.sln
Normal file
85
sp/src/games.sln
Normal 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
|
||||||
Reference in New Issue
Block a user