Лямбда-выражение не поддерживает встроенный ассемблерный код

coder of the year
Участник
Участник
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
890
Реакции
266
Помогите, прошу!

C++:
Expand Collapse Copy
void AngleVectors(const Vector &angles, Vector *forward, Vector *right, Vector *up)
{
    auto SinCos = [](float flRadians, float* pflSine, float* pflCosine)
    {
        __asm
        {
            fld    DWORD PTR[flRadians]
            fsincos
            mov edx, DWORD PTR[pflCosine]
            mov eax, DWORD PTR[pflSine]
            fstp DWORD PTR[edx]
            fstp DWORD PTR[eax]
        }
    };
    float sr, sp, sy, cr, cp, cy;

    SinCos(DEG2RAD(angles[1]), &sy, &cy);
    SinCos(DEG2RAD(angles[0]), &sp, &cp);
    SinCos(DEG2RAD(angles[2]), &sr, &cr);

    if (forward)
    {
        forward->x = cp * cy;
        forward->y = cp * sy;
        forward->z = -sp;
    }

    if (right)
    {
        right->x = (-1 * sr*sp*cy + -1 * cr*-sy);
        right->y = (-1 * sr*sp*sy + -1 * cr*cy);
        right->z = -1 * sr*cp;
    }

    if (up)
    {
        up->x = (cr*sp*cy + -sr * -sy);
        up->y = (cr*sp*sy + -sr * cy);
        up->z = cr * cp;
    }
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
void AngleVectors(const Vector &angles, Vector *forward, Vector *right, Vector *up)
{
    auto SinCos = [](float flRadians, float* pflSine, float* pflCosine)
    {
       // ПРОСТО НАДО БЫЛО УДАЛИТЬ ЕГО
    };
    float sr, sp, sy, cr, cp, cy;

    SinCos(DEG2RAD(angles[1]), &sy, &cy);
    SinCos(DEG2RAD(angles[0]), &sp, &cp);
    SinCos(DEG2RAD(angles[2]), &sr, &cr);

    if (forward)
    {
        forward->x = cp * cy;
        forward->y = cp * sy;
        forward->z = -sp;
    }

    if (right)
    {
        right->x = (-1 * sr*sp*cy + -1 * cr*-sy);
        right->y = (-1 * sr*sp*sy + -1 * cr*cy);
        right->z = -1 * sr*cp;
    }

    if (up)
    {
        up->x = (cr*sp*cy + -sr * -sy);
        up->y = (cr*sp*sy + -sr * cy);
        up->z = cr * cp;
    }
}
 
Код:
Expand Collapse Copy
void AngleVectors(const Vector &angles, Vector *forward, Vector *right, Vector *up)
{
    auto SinCos = [](float flRadians, float* pflSine, float* pflCosine)
    {
       // ПРОСТО НАДО БЫЛО УДАЛИТЬ ЕГО
    };
    float sr, sp, sy, cr, cp, cy;

    SinCos(DEG2RAD(angles[1]), &sy, &cy);
    SinCos(DEG2RAD(angles[0]), &sp, &cp);
    SinCos(DEG2RAD(angles[2]), &sr, &cr);

    if (forward)
    {
        forward->x = cp * cy;
        forward->y = cp * sy;
        forward->z = -sp;
    }

    if (right)
    {
        right->x = (-1 * sr*sp*cy + -1 * cr*-sy);
        right->y = (-1 * sr*sp*sy + -1 * cr*cy);
        right->z = -1 * sr*cp;
    }

    if (up)
    {
        up->x = (cr*sp*cy + -sr * -sy);
        up->y = (cr*sp*sy + -sr * cy);
        up->z = cr * cp;
    }
}
удачи, будет еще больше ошибок
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
void AngleVectors(const Vector &angles, Vector *forward, Vector *right, Vector *up)
{
    auto SinCos = [](float flRadians, float* pflSine, float* pflCosine)
    {
       // ПРОСТО НАДО БЫЛО УДАЛИТЬ ЕГО
    };
    float sr, sp, sy, cr, cp, cy;

    SinCos(DEG2RAD(angles[1]), &sy, &cy);
    SinCos(DEG2RAD(angles[0]), &sp, &cp);
    SinCos(DEG2RAD(angles[2]), &sr, &cr);

    if (forward)
    {
        forward->x = cp * cy;
        forward->y = cp * sy;
        forward->z = -sp;
    }

    if (right)
    {
        right->x = (-1 * sr*sp*cy + -1 * cr*-sy);
        right->y = (-1 * sr*sp*sy + -1 * cr*cy);
        right->z = -1 * sr*cp;
    }

    if (up)
    {
        up->x = (cr*sp*cy + -sr * -sy);
        up->y = (cr*sp*sy + -sr * cy);
        up->z = cr * cp;
    }
}
Спасибо))
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну блять, в моем сурсе у меня была такая же проблема с этой хуйней
пробовал убрать/закоментировать - вместо 1 ошибки теперь 20 блять
потому-что ты не то удалял, нужно сам ассемблерный код удалять
 
ну блять, в моем сурсе у меня была такая же проблема с этой хуйней
пробовал убрать/закоментировать - вместо 1 ошибки теперь 20 блять
У кого-то руки не из того места растут)
 
Назад
Сверху Снизу