Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Глобальное изменение масштаба
Уменьшение размеров всего
Страницы (10): « Первая ... « 6 7 8 9 [10]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 20426
Нанёс повреждений: 352 ед.

Рейтинг



Ну вызови SV_CreateAreaNode из SetCollisionBox, но с защёлкой. Типа инициализация при первом обращении
Токо при DeactivateServer не забудь эту защёлку обнулить.

__________________
Анонимные признания кубанцев: я устала завтракать борщом.

Сообщить модератору | | IP: Записан
Сообщение: 164592

Старое сообщение 08-02-2017 08:39
-
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 3951
Возраст: 25

Рейтинг



Цитата:
Дядя Миша писал:
но с защёлкой.

Ну это ясно понятно. Чтобы это дело только один раз вызывалось.
Цитата:
Дядя Миша писал:
SetCollisionBox

Как вариант пойдёт, т.к. вызывается из SV_LinkEdict до первого обращения к areanode_t. Тут другая проблема. На момент вызова SV_LinkEdict из pfnSetOrigin, например, ещё недоступна функция IEngineStudio.GetModelByIndex. Ну или я просто не из того места вызывал её. Клиентка вообще грузится сразу при запуске халфы (стимовской). А вот интерфейс студиорендерера наверное грузится уже при загрузке уровня. ХЗ, надо проверить.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 164603

Старое сообщение 08-02-2017 14:09
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 1711

Рейтинг



Цитата:
Ku2zoff писал:
Можно даже не задерживать спаун, а зациклить вызовы тех же pfnSetOrigin, pfnWalkMove и прочих (возвращая NULL грубо говоря), до тех пор, пока не будет возможно их выполнить с нужным результатом.

Я всегда стараюсь исключать такие варианты. Это приемлемо в многопоточных приложениях, когда нужна синхронизация потоков, но если всё выполняется последовательно, то всегда лучше сделать вменяемую проверку

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 164606

Старое сообщение 08-02-2017 16:44
- За что?
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 3951
Возраст: 25

Рейтинг



Цитата:
Ku2zoff писал:
А вот интерфейс студиорендерера наверное грузится уже при загрузке уровня. ХЗ, надо проверить.

Действительно, модель мира никак недоступна при первых вызовах SV_LinkEdict. Надо либо грузить её прямо в дллке, либо вызывать функции повторно, после её загрузки.

Добавлено 09-02-2017 в 00:15:

Придётся тащить в дллку Mod_LoadBrushModel, а потом выкидывать всё, что не нужно на сервере.
C++ Source Code:
Mod_LoadVertexes( &header->lumps[LUMP_VERTEXES] );
Mod_LoadEdges( &header->lumps[LUMP_EDGES] );
Mod_LoadSurfEdges( &header->lumps[LUMP_SURFEDGES] );
Mod_LoadTextures( &header->lumps[LUMP_TEXTURES] );
Mod_LoadLighting( &header->lumps[LUMP_LIGHTING] );
Mod_LoadVisibility( &header->lumps[LUMP_VISIBILITY] );
Mod_LoadTexInfo( &header->lumps[LUMP_TEXINFO] );
Mod_LoadSurfaces( &header->lumps[LUMP_FACES] );
Mod_LoadMarkSurfaces( &header->lumps[LUMP_MARKSURFACES] );
Mod_LoadLeafs( &header->lumps[LUMP_LEAFS] );
Mod_LoadNodes( &header->lumps[LUMP_NODES] );


Думаю, что сразу можно выбросить освещение и текстуры. Может быть и видимость. Надо повнимательнее почитать код, какие компоненты модели нам нужны для физики. Ну и грузить придётся опять же из SetCollisionBox.

А можно и не выкидывать. По крайней мере, загрузив освещение, можно заставить правильно работать pfnGetEntityIllum, который вроде бы не работает как надо в халфе.

Добавлено 09-02-2017 в 00:38:

Надеюсь, если запихнуть загрузку карты (и своего собственного массива моделей) в ServerActivate, то всё будет успевать загрузиться раньше спауна и вызовов SET_MODEL и SET_ORIGIN. Хотя наверное нет, и тогда придётся хитрить со спауном, как для игрока в DMC: сначала спауним без SET_MODEL и SET_ORIGIN, а потом уже спауним повторно из ServerActivate с полным набором функций. И да, через SET_MODEL в этом случае можно будет загнать модели не только в движковый, но и в собственный список.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 164607

Старое сообщение 08-02-2017 17:38
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 20426
Нанёс повреждений: 352 ед.

Рейтинг



Цитата:
Ku2zoff писал:
На момент вызова SV_LinkEdict из pfnSetOrigin, например, ещё недоступна функция IEngineStudio.GetModelByIndex

Я тебя наверное опять расстрою, но в серверном интерфейсе нет такой функции.
Там вот такое:
C++ Source Code:
// Allocate number*size bytes and zero it
void    *( *Mem_Calloc )( int number, size_t size );
// Check to see if pointer is in the cache
void    *( *Cache_Check )( struct cache_user_s *c );
// Load file into cache ( can be swapped out on demand )
void    ( *LoadCacheFile )( char *path, struct cache_user_s *cu );
// Retrieve pointer to studio model data block from a model
void    *( *Mod_Extradata )( struct model_s *mod );


Весь этот набор очень специфичен и годится только для одного - загружать секвенции в тех моделях, где они поделены на группы.

__________________
Анонимные признания кубанцев: я устала завтракать борщом.

Сообщить модератору | | IP: Записан
Сообщение: 164611

Старое сообщение 08-02-2017 17:45
-
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 3951
Возраст: 25

Рейтинг



Цитата:
Дядя Миша писал:
Я тебя наверное опять расстрою

IEngineStudio.GetModelByIndex у меня дёрнута с клиентки, как в тринити. Временно. Буду делать свою загрузку моделей из дллки.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 164625

Старое сообщение 09-02-2017 01:05
- За что?
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 3951
Возраст: 25

Рейтинг



Есть небольшой прогресс. Сделал проверки на загруженность модели мира и ареанодов. Грузить при использовании клиентской IEngineStudio.GetModelByIndex можно смело только из StartFrame, т.к. на момент вызова ServerActivate экспорты клиентки ещё недоступны.
Короче говоря, нужна защёлка, по которой сначала грузим модель мира, сразу за ней ареаноды, а потом заново вызываем SET_MODEL, SET_ORIGIN и SET_SIZE для тех энтить, которым это нужно, чтобы установить правильные размеры. Можно конечно и не вызывать первый раз, а только во второй. Но не знаю, поломается от этого что-то или нет. Вообще, два раза имеет смысл вызывать только SET_MODEL. Первый раз для регистрации модели в движке, а второй раз уже для установки размеров в дллке.
Сейчас уже нет сил на эксперименты. Надеюсь, что за пару недель у меня что-нибудь получится.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 164786

Старое сообщение 16-02-2017 16:46
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 20426
Нанёс повреждений: 352 ед.

Рейтинг



Цитата:
Ku2zoff писал:
т.к. на момент вызова ServerActivate экспорты клиентки ещё недоступны.

Не экспорты клиентки недоступны, а конкретно эта функция возвращает NULL, потому что на клиент еще не пришло обновление. А так, экспорты клиентки доступны еще до того, как серверная дллка вообще будет загружена.

__________________
Анонимные признания кубанцев: я устала завтракать борщом.

Сообщить модератору | | IP: Записан
Сообщение: 164787

Старое сообщение 16-02-2017 19:39
-
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 3951
Возраст: 25

Рейтинг



Цитата:
Дядя Миша писал:
А так, экспорты клиентки доступны еще до того, как серверная дллка вообще будет загружена.

А, точно. Я что попало понаписал. Клиентка же грузится движком раньше сервера.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 164789

Старое сообщение 17-02-2017 03:30
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 08:23. Новая тема    Ответить
Страницы (10): « Первая ... « 6 7 8 9 [10]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Глобальное изменение масштаба
Уменьшение размеров всего
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2017

Рейтинг@Mail.ru