1. C++ / Говнокод #17454

    +50

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    else if ( pTemp->flags & FTENT_SPIRAL )
    			{
    				float s, c;
    				s = sin( pTemp->entity.baseline.origin[2] + fastFreq );
    				c = cos( pTemp->entity.baseline.origin[2] + fastFreq );
    
    				pTemp->entity.origin[0] += pTemp->entity.baseline.origin[0] * frametime + 8 * sin( client_time * 20 + (int)pTemp );
    				pTemp->entity.origin[1] += pTemp->entity.baseline.origin[1] * frametime + 4 * sin( client_time * 30 + (int)pTemp );
    				pTemp->entity.origin[2] += pTemp->entity.baseline.origin[2] * frametime;
    			}

    entity.cpp из cl_dlls от xash. Предположительно унаследовано от half-life sdk. На 64 битах сборка разумеется падает.
    Что они пытались сделать?
    За запихивание указателя под синус имхо надо запихивать указатель в анус.

    Запостил: mittorn, 15 Января 2015

    Комментарии (7) RSS

    • Может такой хитрый способ получить случайное число? Кстати, client_time - это float?

      А float s, c нигде не используется, что ли?
      Ответить
      • Причём нужно, чтобы число не менялось в пределах одной entity. По хорошему завести поле rate и инициализировать его rand'ом. Или вообще убрать этот ужас.
        Именно из-за этого баг с bunny hop был. Всё завязано на framerate. Причём фикс самый что не наесть костыльный: ограничить скорость перемещения объектов в сервере.
        Конечно s и c не используются, это весь блок. Он и ворнинги сыпет, хотя я не сразу второе гно нашёл.
        Ответить
        • bunny hop - это "распрыжка"? Она же ещё в quake была.
          А где второе говно? Что-то не вижу больше ничего.
          Ответить
          • Первое - указатель в ануссинус, второе - 2 лишние переменные.
            Ответить
    • Какой пидорас так скобки расставляет?
      Ответить
      • Аз есмь трим пробельных символов в первой строке.
        Ответить

    Добавить комментарий