Fix wrong offset initialization

This commit is contained in:
mittorn 2016-10-03 20:56:42 +00:00
parent a2fe6a9dad
commit 26c80df6d5
1 changed files with 32 additions and 15 deletions

View File

@ -1313,6 +1313,7 @@ public:
void EXPORT TriggerChangeLevel( void );
void EXPORT ExecuteChangeLevel( void );
void EXPORT TouchChangeLevel( CBaseEntity *pOther );
void EXPORT UpdateColor();
void ChangeLevelNow( CBaseEntity *pActivator );
static edict_t *FindLandmark( const char *pLandmarkName );
@ -1406,32 +1407,45 @@ void CChangeLevel::Spawn( void )
SetTouch( &CChangeLevel::TouchChangeLevel );
if( mp_coop_changelevel.value )
{
Vector origin = VecBModelOrigin(pev);
Vector point, angles;
CBaseEntity *pPlayer;
if( gpGlobals->startspot && STRING(gpGlobals->startspot) && !strcmp(STRING(gpGlobals->startspot), m_szLandmarkName) )
m_fIsBack = true;
if( !m_fIsBack && CoopGetSpawnPoint( &point, &angles ) )
if( (origin - point).Length() < 500 )
m_fIsBack = true;
if( !m_fIsBack && (pPlayer = UTIL_FindEntityByClassname( NULL, "info_player_start" )) )
if( (origin - pPlayer->pev->origin).Length() < 1000 )
m_fIsBack = true;
// set color (got from XDM)
pev->effects &= ~EF_NODRAW;
pev->rendermode = kRenderTransColor;
if( m_fIsBack)
if( m_fIsBack )
pev->rendercolor.z = 255;
else
pev->rendercolor.y = 255;
pev->renderamt = 127;
pev->renderfx = kRenderFxPulseFast;
pev->effects &= ~EF_NODRAW;
pev->rendermode = kRenderTransColor;
SetThink( &CChangeLevel::UpdateColor );
pev->nextthink = gpGlobals->time + 2;
}
}
//ALERT( at_console, "TRANSITION: %s (%s)\n", m_szMapName, m_szLandmarkName );
}
void CChangeLevel::UpdateColor( void )
{
Vector origin = VecBModelOrigin(pev);
Vector point, angles;
CBaseEntity *pPlayer;
pev->nextthink = gpGlobals->time + 30;
if( !m_fIsBack && (pPlayer = UTIL_FindEntityByClassname( NULL, "info_player_start" )) )
if( (origin - pPlayer->pev->origin).Length() < 500 )
m_fIsBack = true;
if( !m_fIsBack && CoopGetSpawnPoint( &point, &angles ) )
if( (origin - point).Length() < 500 )
m_fIsBack = true;
pev->rendercolor.x = 0;
if( m_fIsBack )
pev->rendercolor.z = 255;
else
pev->rendercolor.y = 255;
}
void CChangeLevel::ExecuteChangeLevel( void )
{
MESSAGE_BEGIN( MSG_ALL, SVC_CDTRACK );
@ -1508,7 +1522,7 @@ static void validateoffset( void )
if(landmark)
g_SavedCoords.offset = landmark->v.origin - g_SavedCoords.offset;
else
g_SavedCoords.offset = g_vecZero;
g_SavedCoords.offset = g_vecZero - g_SavedCoords.offset;
g_SavedCoords.validoffset = true;
}
}
@ -1637,7 +1651,10 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator )
}
// forget touch by some fool
if( gpGlobals->time - pev->dmgtime > 30)
{
m_uTouchCount = 0;
pev->nextthink = gpGlobals->time + 30;
}
if(mp_coop_changelevel.value)
{