Added animation num checks

This commit is contained in:
OM 2023-05-23 23:06:26 +02:00
parent 0477224085
commit 6a74d72017

View file

@ -263,6 +263,14 @@ TIKI_Anim_NumFrames
*/ */
int TIKI_Anim_NumFrames( dtiki_t *pmdl, int animnum ) int TIKI_Anim_NumFrames( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return 0;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return 0;
}
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] ); skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
return animData->numFrames; return animData->numFrames;
} }
@ -274,6 +282,14 @@ TIKI_Anim_Time
*/ */
float TIKI_Anim_Time( dtiki_t *pmdl, int animnum ) float TIKI_Anim_Time( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return 0.0;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return 0.0;
}
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] ); skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
return animData->flags & TAF_DELTADRIVEN return animData->flags & TAF_DELTADRIVEN
@ -288,6 +304,14 @@ TIKI_Anim_Frametime
*/ */
float TIKI_Anim_Frametime( dtiki_t *pmdl, int animnum ) float TIKI_Anim_Frametime( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return 0.0;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return 0.0;
}
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] ); skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
return animData->frameTime; return animData->frameTime;
} }
@ -299,6 +323,14 @@ TIKI_Anim_Delta
*/ */
void TIKI_Anim_Delta( dtiki_t *pmdl, int animnum, float *delta ) void TIKI_Anim_Delta( dtiki_t *pmdl, int animnum, float *delta )
{ {
if (!pmdl) {
return;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return;
}
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] ); skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
VectorScale( animData->totalDelta, pmdl->load_scale, delta ); VectorScale( animData->totalDelta, pmdl->load_scale, delta );
} }
@ -310,6 +342,14 @@ TIKI_Anim_HasDelta
*/ */
qboolean TIKI_Anim_HasDelta( dtiki_t *pmdl, int animnum ) qboolean TIKI_Anim_HasDelta( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return qfalse;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return qfalse;
}
skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] ); skelAnimDataGameHeader_t *animData = SkeletorCacheGetData( pmdl->a->m_aliases[ animnum ] );
return animData->bHasDelta; return animData->bHasDelta;
} }
@ -346,6 +386,14 @@ TIKI_Anim_Flags
*/ */
int TIKI_Anim_Flags( dtiki_t *pmdl, int animnum ) int TIKI_Anim_Flags( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return 0;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return 0;
}
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ]; dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
return panimdef->flags; return panimdef->flags;
} }
@ -357,6 +405,14 @@ TIKI_Anim_FlagsSkel
*/ */
int TIKI_Anim_FlagsSkel( dtiki_t *pmdl, int animnum ) int TIKI_Anim_FlagsSkel( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return 0;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return 0;
}
skelAnimDataGameHeader_t *animData; skelAnimDataGameHeader_t *animData;
int flags; int flags;
@ -382,6 +438,14 @@ TIKI_Anim_HasServerCommands
*/ */
qboolean TIKI_Anim_HasServerCommands( dtiki_t *pmdl, int animnum ) qboolean TIKI_Anim_HasServerCommands( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return qfalse;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return qfalse;
}
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ]; dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
return panimdef->num_server_cmds > 0; return panimdef->num_server_cmds > 0;
} }
@ -393,6 +457,14 @@ TIKI_Anim_HasClientCommands
*/ */
qboolean TIKI_Anim_HasClientCommands( dtiki_t *pmdl, int animnum ) qboolean TIKI_Anim_HasClientCommands( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return qfalse;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return qfalse;
}
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ]; dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
return panimdef->num_client_cmds > 0; return panimdef->num_client_cmds > 0;
} }
@ -404,6 +476,14 @@ TIKI_Anim_CrossblendTime
*/ */
float TIKI_Anim_CrossblendTime( dtiki_t *pmdl, int animnum ) float TIKI_Anim_CrossblendTime( dtiki_t *pmdl, int animnum )
{ {
if (!pmdl) {
return 0.0;
}
if (!pmdl->a || animnum < 0 || animnum >= pmdl->a->num_anims) {
return 0.0;
}
dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ]; dtikianimdef_t *panimdef = pmdl->a->animdefs[ animnum ];
return panimdef->blendtime; return panimdef->blendtime;
} }