//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CPlayer_Control::ControlDeactivate( void ) { m_bActive = false; RemoveEffects( EF_NODRAW ); SetThink(NULL); SetTouch(NULL); CHL2_Player* pPlayer = (CHL2_Player*)UTIL_GetLocalPlayer(); Assert( pPlayer ); // Restore Data pPlayer->SetFOV( this, m_nSaveFOV ); pPlayer->RemoveSolidFlags( FSOLID_NOT_SOLID ); pPlayer->SetLocalOrigin( m_vSaveOrigin ); pPlayer->SetLocalAngles( m_vSaveAngles ); // Note: Set GetLocalAngles(), not pl->v_angle pPlayer->SnapEyeAngles( m_vSaveAngles ); pPlayer->StopFollowingEntity(); pPlayer->SetMoveType( m_nSaveMoveType, m_nSaveMoveCollide ); pPlayer->SetViewOffset( m_vSaveViewOffset ); pPlayer->SetControlClass( CLASS_NONE ); DispatchUpdateTransmitState(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CPlayer_Missile::InputActivate( inputdata_t &inputdata ) { // Make sure not already active if (m_bActive) { return; } BaseClass::InputActivate( inputdata ); Vector origin = GetLocalOrigin(); origin.z += 50; SetLocalOrigin( origin ); RemoveSolidFlags( FSOLID_NOT_SOLID ); Relink(); // Using player angles to determine turning. Initailze to 0,0,0 CHL2_Player* pPlayer = (CHL2_Player*)UTIL_PlayerByIndex( 1 ); Assert( pPlayer ); pPlayer->SetLocalAngles( vec3_angle ); // Note: Set GetLocalAngles(), not pl.v_angle pPlayer->SnapEyeAngles( vec3_angle ); // Force reset pPlayer->SetFOV( 100 ); engine->SetView( pPlayer->edict(), edict() ); m_flStatic = 0; SetThink(Launch); SetNextThink( gpGlobals->curtime + m_flLaunchDelay ); }