Доброго времени суток. Столкнулся с проблемой изменения pev_framerate объекту, у которого на данный момент проигрывается анимация. Дело в том что когда я меняю pev_framerate объекту с 1.0 на 0.33, то кадр анимации сбивается. Как изменить pev_framerate объекту и оставить тот же кадр что и был до изменения.
Создаю объект и задаю анимацию:
Изменяю framerate и кадр сбивается:
Пробовал получать данные до и после изменения, pev_frame всегда равен 0.
Log:
Так же пробовал шаманить с pev_animtime, при изменении значения кадр меняется, но как подобрать нужное значение?
Demo:
Создаю объект и задаю анимацию:
Код:
new iAnimDesired, Float:flFrameRate, Float:flGroundSpeed, bool:bLoops, Float:fGameTime = get_gametime();
static iszFuncWall;
if(iszFuncWall || (iszFuncWall = engfunc(EngFunc_AllocString, "func_wall"))) iEntity = engfunc(EngFunc_CreateNamedEntity, iszFuncWall);
set_pev(iEntity, pev_movetype, MOVETYPE_NOCLIP);
engfunc(EngFunc_SetModel, iEntity, "models/player/gign/gign.mdl");
if((iAnimDesired = lookup_sequence(iEntity, "forward", flFrameRate, bLoops, flGroundSpeed)) == -1) iAnimDesired = 0;
set_pev(iEntity, pev_frame, 0.0);
set_pev(iEntity, pev_framerate, 1.0);
set_pev(iEntity, pev_animtime, fGameTime);
set_pev(iEntity, pev_sequence, iAnimDesired);
Код:
set_pev(iEntity, pev_framerate, 0.33);
Код:
client_print(0, print_chat, "pre %d %f", pev(iEntity, pev_frame), pev(iEntity, pev_frame));
set_pev(iEntity, pev_framerate, 0.33);
client_print(0, print_chat, "post %d %f", pev(iEntity, pev_frame), pev(iEntity, pev_frame));
Код:
pre 0 0.000000
post 0 0.000000
Demo: