void CController::MoveExecute( CBaseEntity *pTargetEnt, const Vector &vecDir, float flInterval ) { if ( m_IdealActivity != m_movementActivity ) m_IdealActivity = m_movementActivity; // ALERT( at_console, "move %.4f %.4f %.4f : %f\n", vecDir.x, vecDir.y, vecDir.z, flInterval ); // float flTotal = m_flGroundSpeed * pev->framerate * flInterval; // UTIL_MoveToOrigin ( ENT(pev), m_Route[ m_iRouteIndex ].vecLocation, flTotal, MOVE_STRAFE ); m_velocity = m_velocity * 0.8 + m_flGroundSpeed * vecDir * 0.2; UTIL_MoveToOrigin ( ENT(pev), pev->origin + m_velocity, m_velocity.Length() * flInterval, MOVE_STRAFE ); }
void CLuciole::MoveExecute( CBaseEntity *pTargetEnt, const Vector &vecDir, float flInterval ) { if ( m_IdealActivity != m_movementActivity ) m_IdealActivity = m_movementActivity; m_velocity = m_velocity * 0.8 + m_flGroundSpeed * vecDir * 0.5; m_velocity = m_velocity.Normalize() * max ( m_velocity.Length(), 100 ); m_velocity = m_velocity.Normalize() * min ( 300, m_velocity.Length() ); UTIL_MoveToOrigin ( ENT(pev), pev->origin + m_velocity, m_velocity.Length() * flInterval, MOVE_STRAFE ); }
void CFlyingMonster::MoveExecute( CBaseEntity *pTargetEnt, const Vector &vecDir, float flInterval ) { if ( pev->movetype == MOVETYPE_FLY ) { if ( gpGlobals->time - m_stopTime > 1.0 ) { if ( m_IdealActivity != m_movementActivity ) { m_IdealActivity = m_movementActivity; m_flGroundSpeed = m_flightSpeed = 200; } } Vector vecMove = pev->origin + (( vecDir + (m_vecTravel * m_momentum) ).Normalize() * (m_flGroundSpeed * flInterval)); if ( m_IdealActivity != m_movementActivity ) { m_flightSpeed = UTIL_Approach( 100, m_flightSpeed, 75 * gpGlobals->frametime ); if ( m_flightSpeed < 100 ) m_stopTime = gpGlobals->time; } else m_flightSpeed = UTIL_Approach( 20, m_flightSpeed, 300 * gpGlobals->frametime ); if ( CheckLocalMove ( pev->origin, vecMove, pTargetEnt, NULL ) ) { m_vecTravel = (vecMove - pev->origin); m_vecTravel = m_vecTravel.Normalize(); UTIL_MoveToOrigin(ENT(pev), vecMove, (m_flGroundSpeed * flInterval), MOVE_STRAFE); } else { m_IdealActivity = GetStoppedActivity(); m_stopTime = gpGlobals->time; m_vecTravel = g_vecZero; } } else CBaseMonster::MoveExecute( pTargetEnt, vecDir, flInterval ); }