|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь |
|
Опции темы | Поиск в этой теме | Опции просмотра |
24.05.2014, 19:54 | #1 |
Гость
Сообщений: n/a
|
Сетка Mangos
Всем привет! Я занимаюсь изучением Mangos и не могу понять:
Mangos использует сетку для загрузки объектов в мирах клиентов, но я не могу определить: 1) Какого размера эта сетка? 2) Какой реальный размер одной ячейки в масштабе карты? 3) Размер сетки одинаков или зависит от размера карты? Последний раз редактировалось worldqq; 10.06.2014 в 12:19. |
25.05.2014, 21:37 | #2 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Все константы геометрии карты заданы в
src/game/GridDefines.h условно размер считается в ярдах, но учитывая (1 ярд = 0.9144 метра), можно и метрами обзывать
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
26.05.2014, 09:20 | #3 |
Гость
Сообщений: n/a
|
С размером сетки/ячейки я разобрался. Но как Mangos переводит XYZ в ярды – непонятно.
Вот тут начинается преобразование XY персонажа в CellPair: Код:
void Map::MessageDistBroadcast(WorldObject const* obj, WorldPacket* msg, float dist) { CellPair p = MaNGOS::ComputeCellPair(obj->GetPositionX(), obj->GetPositionY()); Код:
inline CellPair ComputeCellPair(float x, float y) { return Compute<CellPair, CENTER_GRID_CELL_ID>(x, y, CENTER_GRID_CELL_OFFSET, SIZE_OF_GRID_CELL); } Код:
template<class RET_TYPE, int CENTER_VAL> inline RET_TYPE Compute(float x, float y, float center_offset, float size) { // calculate and store temporary values in double format for having same result as same mySQL calculations double x_offset = (double(x) - center_offset) / size; double y_offset = (double(y) - center_offset) / size; int x_val = int(x_offset + CENTER_VAL + 0.5); int y_val = int(y_offset + CENTER_VAL + 0.5); return RET_TYPE(x_val, y_val); } Код:
double x_offset = (X персонажа - половина размера ячейки) / размер ячейки; int x_val = int(x_offset + 512 + 0.5); где 512 - CENTER_GRID_CELL_ID - ID центральной ячейки? Последний раз редактировалось worldqq; 26.05.2014 в 10:35. |
27.05.2014, 15:18 | #4 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Это вычисляется Cell к которой относится координата - карта порезана на 64x64 или меньше Grid-ов и каждый из них порезан еще на 8x8 Cell.
Grid - минимальная ячейка хранения и загрузки геометрии Cell - минимальная ячейка обработки активности объектов в мире
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
10.06.2014, 09:10 | #5 |
Гость
Сообщений: n/a
|
Константы в src/game/GridDefines.h заданы такие же как и в клиенте?
И ещё: в какую сторону направлен X сетки мангоса? Последний раз редактировалось worldqq; 11.06.2014 в 09:54. |
11.06.2014, 15:23 | #6 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Кроме максимального размера карты остальное чисто серверные заморочки.
Сетка клиента как вы нарисовали в удаленном посте. Но координаты в файлах данных используют другие ориентации осей.
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
11.06.2014, 15:43 | #7 |
Гость
Сообщений: n/a
|
В удалённом посте я сетку не рисовал. То, что размер клетки - это "серверные заморочки" я не согласен, так как map файлы созданы на базе ADT файлов клиента.
Последний раз редактировалось worldqq; 11.06.2014 в 15:46. |
11.06.2014, 16:11 | #8 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Вы там оси координат рисовали (я могу смотреть удаленные посты )
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
11.06.2014, 16:49 | #9 |
Гость
Сообщений: n/a
|
Т.е Вы хотите сказать, что направление XY сетки совпадает с направлением XY координат wow?
|
11.06.2014, 17:12 | #10 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
11.06.2014, 17:24 | #11 |
Гость
Сообщений: n/a
|
А, ну это я читал. Но из этой инфы непонятно почему в названиях ADT файлов XY стоит обратном порядке по отношению к .map файлам.
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
trinity (world) to mangos (mangos) | Timmy-kr | Корзина | 1 | 02.06.2010 04:51 |