Using vmAnim_e enum

This commit is contained in:
L 2023-05-03 19:38:24 +02:00
parent 0fc3ecf67e
commit 863a730271

View file

@ -187,7 +187,7 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
if (cg.snap->ps.iViewModelAnimChanged != cgi.anim->g_iLastVMAnimChanged) if (cg.snap->ps.iViewModelAnimChanged != cgi.anim->g_iLastVMAnimChanged)
{ {
bAnimChanged = 1; bAnimChanged = qtrue;
cgi.anim->g_iLastVMAnim = cg.snap->ps.iViewModelAnim; cgi.anim->g_iLastVMAnim = cg.snap->ps.iViewModelAnim;
cgi.anim->g_iLastVMAnimChanged = cg.snap->ps.iViewModelAnimChanged; cgi.anim->g_iLastVMAnimChanged = cg.snap->ps.iViewModelAnimChanged;
} }
@ -196,36 +196,37 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
{ {
switch (cgi.anim->g_iLastVMAnim) switch (cgi.anim->g_iLastVMAnim)
{ {
case 1: case VM_ANIM_CHARGE:
pszAnimSuffix = "charge"; pszAnimSuffix = "charge";
break; break;
case 2: case VM_ANIM_FIRE:
pszAnimSuffix = "fire"; pszAnimSuffix = "fire";
break; break;
case 3: case VM_ANIM_FIRE_SECONDARY:
pszAnimSuffix = "fire_secondary"; pszAnimSuffix = "fire_secondary";
break; break;
case 4: case VM_ANIM_RECHAMBER:
pszAnimSuffix = "rechamber"; pszAnimSuffix = "rechamber";
break; break;
case 5: case VM_ANIM_RELOAD:
pszAnimSuffix = "reload"; pszAnimSuffix = "reload";
break; break;
case 6: case VM_ANIM_RELOAD_SINGLE:
pszAnimSuffix = "reload_single"; pszAnimSuffix = "reload_single";
break; break;
case 7: case VM_ANIM_RELOAD_END:
pszAnimSuffix = "reload_end"; pszAnimSuffix = "reload_end";
break; break;
case 8: case VM_ANIM_PULLOUT:
pszAnimSuffix = "pullout"; pszAnimSuffix = "pullout";
break; break;
case 9: case VM_ANIM_PUTAWAY:
pszAnimSuffix = "putaway"; pszAnimSuffix = "putaway";
break; break;
case 0xA: case VM_ANIM_LADDERSTEP:
pszAnimSuffix = "ladderstep"; pszAnimSuffix = "ladderstep";
break; break;
case VM_ANIM_IDLE:
default: default:
pszAnimSuffix = "idle"; pszAnimSuffix = "idle";
break; break;
@ -246,7 +247,7 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
cgi.anim->g_VMFrameInfo[i].weight = fCrossblendFrac; cgi.anim->g_VMFrameInfo[i].weight = fCrossblendFrac;
} }
else { else {
cgi.anim->g_VMFrameInfo[i].weight = (1.0 - fCrossblendFrac) * cgi.anim->g_VMFrameInfo[i].weight; cgi.anim->g_VMFrameInfo[i].weight *= (1.0 - fCrossblendFrac);
} }
} }
} }
@ -288,14 +289,17 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
{ {
fCrossblendTime = cgi.Anim_CrossblendTime(pTiki, cgi.anim->g_VMFrameInfo[cgi.anim->g_iCurrentVMAnimSlot].index); fCrossblendTime = cgi.Anim_CrossblendTime(pTiki, cgi.anim->g_VMFrameInfo[cgi.anim->g_iCurrentVMAnimSlot].index);
fCrossblendAmount = cgi.anim->g_iCurrentVMDuration / 1000.0; fCrossblendAmount = cgi.anim->g_iCurrentVMDuration / 1000.0;
if (fCrossblendAmount >= fCrossblendTime || fCrossblendAmount < 0.0) { if (fCrossblendAmount >= fCrossblendTime || fCrossblendAmount <= 0.0)
{
// clear crossblend values
for (i = 0; i < MAX_FRAMEINFOS; ++i) for (i = 0; i < MAX_FRAMEINFOS; ++i)
{ {
if (i != cgi.anim->g_iCurrentVMAnimSlot) { if (i != cgi.anim->g_iCurrentVMAnimSlot) {
cgi.anim->g_VMFrameInfo[i].weight = 0.0; cgi.anim->g_VMFrameInfo[i].weight = 0.0;
} }
} }
cgi.anim->g_bCrossblending = 0;
cgi.anim->g_bCrossblending = qfalse;
} }
else { else {
fCrossblendFrac = fCrossblendAmount / fCrossblendTime; fCrossblendFrac = fCrossblendAmount / fCrossblendTime;
@ -304,8 +308,9 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
for (i = 0; i < MAX_FRAMEINFOS; ++i) for (i = 0; i < MAX_FRAMEINFOS; ++i)
{ {
if (cgi.anim->g_VMFrameInfo[i].weight == 0.0) if (!cgi.anim->g_VMFrameInfo[i].weight)
{ {
// clear the weight values of the ref entity
pModel->frameInfo[i].index = 0; pModel->frameInfo[i].index = 0;
pModel->frameInfo[i].time = 0.0; pModel->frameInfo[i].time = 0.0;
pModel->frameInfo[i].weight = 0.0; pModel->frameInfo[i].weight = 0.0;
@ -313,12 +318,12 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
else else
{ {
fAnimLength = cgi.Anim_Time(pTiki, cgi.anim->g_VMFrameInfo[i].index); fAnimLength = cgi.Anim_Time(pTiki, cgi.anim->g_VMFrameInfo[i].index);
cgi.anim->g_VMFrameInfo[i].time = cg.frametime / 1000.0 + cgi.anim->g_VMFrameInfo[i].time; cgi.anim->g_VMFrameInfo[i].time += cg.frametime / 1000.0;
if (cgi.anim->g_VMFrameInfo[i].time < fAnimLength) if (cgi.anim->g_VMFrameInfo[i].time > fAnimLength)
{ {
if (cgi.Anim_Flags(pTiki, cgi.anim->g_VMFrameInfo[i].index) & TAF_DELTADRIVEN) { if (cgi.Anim_Flags(pTiki, cgi.anim->g_VMFrameInfo[i].index) & TAF_DELTADRIVEN) {
cgi.anim->g_VMFrameInfo[i].time = cgi.anim->g_VMFrameInfo[i].time - fAnimLength; cgi.anim->g_VMFrameInfo[i].time -= fAnimLength;
} }
else { else {
cgi.anim->g_VMFrameInfo[i].time = fAnimLength; cgi.anim->g_VMFrameInfo[i].time = fAnimLength;
@ -334,7 +339,7 @@ void CG_ViewModelAnimation(refEntity_t* pModel)
pModel->frameInfo[i].weight = fCrossblendFrac; pModel->frameInfo[i].weight = fCrossblendFrac;
} }
else { else {
pModel->frameInfo[i].weight = (1.0 - fCrossblendFrac) * cgi.anim->g_VMFrameInfo[i].weight; pModel->frameInfo[i].weight *= (1.0 - fCrossblendFrac);
} }
} }
else else