Проблема с зависанием анимации у модели локального игрока
Сидел, значит, спокойно работал над модом, и заметил при игре от 3-го лица, что после смерти игрока, у него при хождении полностью зависает анимация: как ног, так и остального тела. Решил разобраться, в чём же все-таки дело. Оказалось, что когда я реализовывал изменение прозрачности модели игрока при приближении камеры к стене, я записывал значение в curstate->renderamt внутри функции V_CalcRefdef().
При этом в рендере студиомоделей содержался подобного рода код:
C++ Source Code:
1
int CStudioModelRenderer::StudioDrawModel( int flags )
Казалось бы, очевидно, в чем тут проблема.
В общем, я переписал этот код, чтобы индекс игрока-хозяина писался в поле owner, вместо поля renderamt. Серверную часть с кодом body que соответственно тоже переписал под эту задумку.
Получилось у меня вот так:
C++ Source Code:
1
int CStudioModelRenderer::StudioDrawModel( int flags )
gEngfuncs.Con_Printf("drawing corpse, owner index %d, ent index %d\n", owner_index, m_pCurrentEntity->index);
28
29
int save_interp = m_fDoInterp;
30
m_fDoInterp = 0;
31
32
// draw as though it were a player
33
int result = StudioDrawPlayer( flags, &deadplayer );
34
35
m_fDoInterp = save_interp;
36
return result;
37
}
Проверил я этот код, вроде бы, поначалу все нормально было. Но стоило мне зайти на сервер в мультиплеере - кто-то умер, и у меня снова сглючило анимацию. Снова попытался выяснить в чем дело. Вроде бы, никаких сторонних обращений к rendetamt в коде мода нет (может быть, они есть в коде движка?), но если я по-прежнему пытаюсь отредактировать это поле из кода камеры, то баг с анимацией начинает себя проявлять.
Надо отметить, что твоя проблема уже давно решена в XDM
Добавлено 21-03-2019 в 15:43:
А если по сабжу, то обрати внимание на то, что некоторыех режимов rendermode на клиенте попросту нет.
kRenderTransTexture или kRenderTransColor,
Столкнулся, когда делал невидимость. Так вот , в DMC специально хак для этого нагородили...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB] писал: А если по сабжу, то обрати внимание на то, что некоторыех режимов rendermode на клиенте попросту нет.
kRenderTransTexture или kRenderTransColor
Странно, но несмотря на это, у меня прозрачность работает.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ну то есть они тупо не рисуют эту модель в руках, чтобы скрыть вышеприведенные уродства...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB] писал: На модель в руках не действует режим отрисовки
- kRenderTransColor
- kRenderTransTexture
TransColor вообще на студиомодели не действует, это я в ксаше специально заморачивался, чёб работало. А TransTexture должен работать, но там есть одна хитрость. Там надо задавать прозрачность через IEngineStudio.SetRenderamt
SNMetamorph я не понял, что тебя так напугало. В твоей стране за эти слова расстреливают?
Это старый тестовый флаг, когда-то я хотел пустить отдельный поток мессаг, да. Но быстро отказался от идеи, ибо нарушает ярусность, как вы догадались. Сейчас он регулирует только соотношение MSG_RELIABLE/UNRELIABLE. В общем, остатки экспериментов.
Трупов игроков в XDM сейчас реально нет. Но можно, например, respawntime увеличить и полюбоваться, если надо.