diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/renderergl1/tr_model.c | 33 | ||||
-rw-r--r-- | src/renderergl2/tr_model.c | 32 |
2 files changed, 26 insertions, 39 deletions
diff --git a/src/renderergl1/tr_model.c b/src/renderergl1/tr_model.c index 3f7423c3..0023f178 100644 --- a/src/renderergl1/tr_model.c +++ b/src/renderergl1/tr_model.c @@ -967,7 +967,7 @@ static md3Tag_t *R_GetTag( md3Header_t *mod, int frame, const char *tagName ) { return NULL; } -void R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, md3Tag_t * dest) +md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, md3Tag_t * dest) { int i, j, k; int frameSize; @@ -1002,13 +1002,11 @@ void R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, md3Tag_t dest->origin[1]=frame->bones[tag->boneIndex].matrix[1][3]; dest->origin[2]=frame->bones[tag->boneIndex].matrix[2][3]; - return; + return dest; } } - AxisClear( dest->axis ); - VectorClear( dest->origin ); - strcpy(dest->name,""); + return NULL; } /* @@ -1029,34 +1027,29 @@ int R_LerpTag( orientation_t *tag, qhandle_t handle, int startFrame, int endFram { if(model->type == MOD_MDR) { - start = &start_space; - end = &end_space; - R_GetAnimTag((mdrHeader_t *) model->modelData, startFrame, tagName, start); - R_GetAnimTag((mdrHeader_t *) model->modelData, endFrame, tagName, end); + start = R_GetAnimTag((mdrHeader_t *) model->modelData, startFrame, tagName, &start_space); + end = R_GetAnimTag((mdrHeader_t *) model->modelData, endFrame, tagName, &end_space); } else if( model->type == MOD_IQM ) { return R_IQMLerpTag( tag, model->modelData, startFrame, endFrame, frac, tagName ); } else { - - AxisClear( tag->axis ); - VectorClear( tag->origin ); - return qfalse; - + start = end = NULL; } } else { start = R_GetTag( model->md3[0], startFrame, tagName ); end = R_GetTag( model->md3[0], endFrame, tagName ); - if ( !start || !end ) { - AxisClear( tag->axis ); - VectorClear( tag->origin ); - return qfalse; - } } - + + if ( !start || !end ) { + AxisClear( tag->axis ); + VectorClear( tag->origin ); + return qfalse; + } + frontLerp = frac; backLerp = 1.0f - frac; diff --git a/src/renderergl2/tr_model.c b/src/renderergl2/tr_model.c index 7ac9f149..7a7e220c 100644 --- a/src/renderergl2/tr_model.c +++ b/src/renderergl2/tr_model.c @@ -1231,7 +1231,7 @@ static mdvTag_t *R_GetTag( mdvModel_t *mod, int frame, const char *_tagName ) { return NULL; } -void R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, mdvTag_t * dest) +mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, mdvTag_t * dest) { int i, j, k; int frameSize; @@ -1264,12 +1264,11 @@ void R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, mdvTag_t dest->origin[1]=frame->bones[tag->boneIndex].matrix[1][3]; dest->origin[2]=frame->bones[tag->boneIndex].matrix[2][3]; - return; + return dest; } } - AxisClear( dest->axis ); - VectorClear( dest->origin ); + return NULL; } /* @@ -1290,34 +1289,29 @@ int R_LerpTag( orientation_t *tag, qhandle_t handle, int startFrame, int endFram { if(model->type == MOD_MDR) { - start = &start_space; - end = &end_space; - R_GetAnimTag((mdrHeader_t *) model->modelData, startFrame, tagName, start); - R_GetAnimTag((mdrHeader_t *) model->modelData, endFrame, tagName, end); + start = R_GetAnimTag((mdrHeader_t *) model->modelData, startFrame, tagName, &start_space); + end = R_GetAnimTag((mdrHeader_t *) model->modelData, endFrame, tagName, &end_space); } else if( model->type == MOD_IQM ) { return R_IQMLerpTag( tag, model->modelData, startFrame, endFrame, frac, tagName ); } else { - - AxisClear( tag->axis ); - VectorClear( tag->origin ); - return qfalse; - + start = end = NULL; } } else { start = R_GetTag( model->mdv[0], startFrame, tagName ); end = R_GetTag( model->mdv[0], endFrame, tagName ); - if ( !start || !end ) { - AxisClear( tag->axis ); - VectorClear( tag->origin ); - return qfalse; - } } - + + if ( !start || !end ) { + AxisClear( tag->axis ); + VectorClear( tag->origin ); + return qfalse; + } + frontLerp = frac; backLerp = 1.0f - frac; |