Господа-форумчане, у меня таки накопилась к вам пара вопросов. Пишу все в одной теме, дабы не создавать несколько маленьктих тем на пару постов каждая.
Вопрос № 1: Есть такие Dispatch-функции, которые вызывает непосредственно движок. В первую очередь, это DispatchTouch и DispatchThink.
А вот вызывается ли вообще функция DispatchUse? В большинстве случаев CAnyEntity::Use вызывается непосредственно из библиотеки ентитей, а не через DispatchUse.
Так же интересно, когда вызывается DispatchSpawn? Как я помню, функция, создающая ентитю, экспортируется макросом LINK_ENTITY_TO_CLASS, и из неё непосредственно вызывается CAnyEntity::Spawn и ещё запрашивается память. А DispatchSpawn тут при чём?
И вот вопрос № 2: Что случается с глобальными переменными, объявленными в библиотеке ентитей, при смене уровня в сингплеере?
Ну то есть обнуляются они, или нет?
И ещё попутный вопрос № 3: При смене уровня в сингле вызываются ли функции ServerActivate/ServerDeactivate? Происходит ли при смене уровня сохранение всех нужных переменных в сэйвв-файл?
LLAPb писал: А вот вызывается ли вообще функция DispatchUse?
Из движка, имхо, не вызывается. Но может вызываться сторонними дллками, которые идут как прокладки между движком и игровой дллкой.
Цитата:
LLAPb писал: Так же интересно, когда вызывается DispatchSpawn?
Энтити не всегда создаются через LINK_ENTITY_TO_CLASS. Иногда они создаются динамически. И еще - при смене уровня или загрузке сохранения вызываются спавн-функции.
Цитата:
LLAPb писал: Что случается с глобальными переменными, объявленными в библиотеке ентитей, при смене уровня в сингплеере?
Ну то есть обнуляются они, или нет?
Нет, неявно они не обнуляются. Только при выгрузке/загрузке длл или явно в коде.
Цитата:
LLAPb писал: При смене уровня в сингле вызываются ли функции ServerActivate/ServerDeactivate?
Тебе проще поставить MessageBox и проверить самому
Цитата:
LLAPb писал: Происходит ли при смене уровня сохранение всех нужных переменных в сэйвв-файл?
Насколько я понимаю, при смене уровня сохранение идет не в файл, а в память. Т.е. файлы по идее не создаются.
DispatchUse никак не вызывается из движка - попросту не нужно, хотя вальвовцы и предусмотрели подобную возможность.
а вот три остальных фундаментальных каллбэка - тоуч, тчинк и блокед - вызываются.