Ejemplo n.º 1
0
void MotionMaster::MoveChase(Unit* target, float dist, float angle, bool moveFurther)
{
    // ignore movement request if target not exist
    if (!target)
        return;

    if (GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
    {
        if (m_owner->GetTypeId() == TYPEID_PLAYER)
        {
            auto gen = (ChaseMovementGenerator<Player>*)top();
            gen->SetMovementParameters(dist, angle, moveFurther);
            gen->SetNewTarget(*target);
        }
        else
        {
            auto gen = (ChaseMovementGenerator<Creature>*)top();
            gen->SetMovementParameters(dist, angle, moveFurther);
            gen->SetNewTarget(*target);
        }
        top()->Reset(*m_owner);
        return;
    }

    DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "%s chase to %s", m_owner->GetGuidStr().c_str(), target->GetGuidStr().c_str());

    if (m_owner->GetTypeId() == TYPEID_PLAYER)
        Mutate(new ChaseMovementGenerator<Player>(*target, dist, angle, moveFurther));
    else
        Mutate(new ChaseMovementGenerator<Creature>(*target, dist, angle, moveFurther));
}
void CAnimActionAIStance::Enter()
{
	TBase::Enter();

	SetMovementParameters();
}