//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CPropVehicleDriveable::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) { CBasePlayer *pPlayer = ToBasePlayer( pActivator ); if ( !pPlayer ) return; ResetUseKey( pPlayer ); // Find out which hitbox the player's eyepoint is within int iEntryAnim = m_pServerVehicle->GetEntryAnimForPoint( pPlayer->EyePosition() ); // Are we in an entrypoint zone? if ( iEntryAnim != ACTIVITY_NOT_AVAILABLE ) { // Check to see if this vehicle can be controlled or if it's locked if ( CanControlVehicle() && CanEnterVehicle(pPlayer) ) { pPlayer->GetInVehicle( GetServerVehicle(), VEHICLE_DRIVER); // Setup the "enter" vehicle sequence and skip the animation if it isn't present. m_flCycle = 0; m_flAnimTime = gpGlobals->curtime; ResetSequence( iEntryAnim ); ResetClientsideFrame(); m_bEnterAnimOn = true; } } }
void UpdateAI(uint32 diff) { VehicleAI::UpdateAI(diff); checkTimer += diff; if (checkTimer >= 1000) { checkTimer = 0; if (me->GetVehicleKit()) for (SeatMap::iterator itr = me->GetVehicleKit()->Seats.begin(); itr != me->GetVehicleKit()->Seats.end(); ++itr) if (const VehicleSeatEntry* seatInfo = itr->second.SeatInfo) if (seatInfo->m_flags & VEHICLE_SEAT_FLAG_CAN_CONTROL) if (Unit* passenger = ObjectAccessor::GetUnit(*me, itr->second.Passenger.Guid)) if (!CanControlVehicle(passenger)) { passenger->ExitVehicle(); return; } } }