Показать сообщение отдельно
Старый 27.07.2015, 19:39   #8
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Это оптимизация, конструкция "x shr 31" при отрицательном X будет принимать 1, в противном случае 0.
Можно написать что-то типа
Код:
  if (x < 0) then
    Dec(x, blockSize);
  xbn := (x div blockSize) + 20;
  ...
Смысл без картинки сложно объяснить, в общем когда преобразуешь координаты к номеру блока, то номера блоков "+0" и "-0" должны отличаться.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием