This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.42d
in repository iortcw.

commit a4d2d85ef24c835c77b4299decafebb5bb0539e1
Author: zturtle...@gmail.com 
<zturtle...@gmail.com@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a>
Date:   Fri May 9 23:02:35 2014 +0000

    All: Make R_LerpTag for MDR use startIndex and return tag index
---
 MP/code/rend2/tr_model.c    | 22 ++++++++++++++++------
 MP/code/renderer/tr_model.c | 22 ++++++++++++++++------
 SP/code/rend2/tr_model.c    | 22 ++++++++++++++++------
 SP/code/renderer/tr_model.c | 22 ++++++++++++++++------
 4 files changed, 64 insertions(+), 24 deletions(-)

diff --git a/MP/code/rend2/tr_model.c b/MP/code/rend2/tr_model.c
index 7e5e9fd..17ee143 100644
--- a/MP/code/rend2/tr_model.c
+++ b/MP/code/rend2/tr_model.c
@@ -2143,12 +2143,13 @@ static int R_GetTag(mdvModel_t * model, int frame, 
const char *_tagName, int sta
        return -1;
 }
 
-mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
mdvTag_t * dest)
+static int R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
int startTagIndex, mdvTag_t **outTag)
 {
        int                             i, j, k;
        int                             frameSize;
        mdrFrame_t              *frame;
        mdrTag_t                *tag;
+       mdvTag_t                *dest = *outTag;
 
        if ( framenum >= mod->numFrames ) 
        {
@@ -2156,10 +2157,16 @@ mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, mdv
                framenum = mod->numFrames - 1;
        }
 
+       if ( startTagIndex > mod->numTags ) 
+       {
+               *outTag = NULL;
+               return -1;
+       }
+
        tag = (mdrTag_t *)((byte *)mod + mod->ofsTags);
        for ( i = 0 ; i < mod->numTags ; i++, tag++ )
        {
-               if ( !strcmp( tag->name, tagName ) )
+               if ( ( i >= startTagIndex ) && !strcmp( tag->name, tagName ) )
                {
                        // uncompressed model...
                        //
@@ -2176,11 +2183,12 @@ mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, mdv
                        
dest->origin[1]=frame->bones[tag->boneIndex].matrix[1][3];
                        
dest->origin[2]=frame->bones[tag->boneIndex].matrix[2][3];                      
        
 
-                       return dest;
+                       return i;
                }
        }
 
-       return NULL;
+       *outTag = NULL;
+       return -1;
 }
 
 /*
@@ -2213,8 +2221,10 @@ int R_LerpTag( orientation_t *tag, const refEntity_t 
*refent, const char *tagNam
        if ( !model->mdv[0] /*&& !model->mdc[0]*/ && !model->mds ) {
                if(model->type == MOD_MDR)
                {
-                       start = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, &start_space);
-                       end = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, &end_space);
+                       start = &start_space;
+                       end = &end_space;
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, startIndex, &start);
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, startIndex, &end);
                }
                else if( model->type == MOD_IQM ) {
                        return R_IQMLerpTag( tag, model->modelData,
diff --git a/MP/code/renderer/tr_model.c b/MP/code/renderer/tr_model.c
index b89ca8f..20be57a 100644
--- a/MP/code/renderer/tr_model.c
+++ b/MP/code/renderer/tr_model.c
@@ -2005,12 +2005,13 @@ static int R_GetMDSTag( byte *mod, const char *tagName, 
int startTagIndex, mdsTa
 }
 */
 
-md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
md3Tag_t * dest)
+static int R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
int startTagIndex, md3Tag_t **outTag)
 {
        int                             i, j, k;
        int                             frameSize;
        mdrFrame_t              *frame;
        mdrTag_t                *tag;
+       md3Tag_t                *dest = *outTag;
 
        if ( framenum >= mod->numFrames ) 
        {
@@ -2018,10 +2019,16 @@ md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, md3
                framenum = mod->numFrames - 1;
        }
 
+       if ( startTagIndex > mod->numTags ) 
+       {
+               *outTag = NULL;
+               return -1;
+       }
+
        tag = (mdrTag_t *)((byte *)mod + mod->ofsTags);
        for ( i = 0 ; i < mod->numTags ; i++, tag++ )
        {
-               if ( !strcmp( tag->name, tagName ) )
+               if ( ( i >= startTagIndex ) && !strcmp( tag->name, tagName ) )
                {
                        Q_strncpyz(dest->name, tag->name, sizeof(dest->name));
 
@@ -2040,11 +2047,12 @@ md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, md3
                        
dest->origin[1]=frame->bones[tag->boneIndex].matrix[1][3];
                        
dest->origin[2]=frame->bones[tag->boneIndex].matrix[2][3];                      
        
 
-                       return dest;
+                       return i;
                }
        }
 
-       return NULL;
+       *outTag = NULL;
+       return -1;
 }
 
 /*
@@ -2086,8 +2094,10 @@ int R_LerpTag( orientation_t *tag, const refEntity_t 
*refent, const char *tagNam
        if ( !model->md3[0] && !model->mdc[0] && !model->mds ) {
                if(model->type == MOD_MDR)
                {
-                       start = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, &start_space);
-                       end = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, &end_space);
+                       start = &start_space;
+                       end = &end_space;
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, startIndex, &start);
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, startIndex, &end);
                }
                else if ( model->type == MOD_IQM ) {
                        return R_IQMLerpTag( tag, model->modelData,
diff --git a/SP/code/rend2/tr_model.c b/SP/code/rend2/tr_model.c
index 5a474b0..b5e0cce 100644
--- a/SP/code/rend2/tr_model.c
+++ b/SP/code/rend2/tr_model.c
@@ -2139,12 +2139,13 @@ static int R_GetTag(mdvModel_t * model, int frame, 
const char *_tagName, int sta
        return -1;
 }
 
-mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
mdvTag_t * dest)
+static int R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
int startTagIndex, mdvTag_t **outTag)
 {
        int                             i, j, k;
        int                             frameSize;
        mdrFrame_t              *frame;
        mdrTag_t                *tag;
+       mdvTag_t                *dest = *outTag;
 
        if ( framenum >= mod->numFrames ) 
        {
@@ -2152,10 +2153,16 @@ mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, mdv
                framenum = mod->numFrames - 1;
        }
 
+       if ( startTagIndex > mod->numTags ) 
+       {
+               *outTag = NULL;
+               return -1;
+       }
+
        tag = (mdrTag_t *)((byte *)mod + mod->ofsTags);
        for ( i = 0 ; i < mod->numTags ; i++, tag++ )
        {
-               if ( !strcmp( tag->name, tagName ) )
+               if ( ( i >= startTagIndex ) && !strcmp( tag->name, tagName ) )
                {
                        // uncompressed model...
                        //
@@ -2172,11 +2179,12 @@ mdvTag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, mdv
                        
dest->origin[1]=frame->bones[tag->boneIndex].matrix[1][3];
                        
dest->origin[2]=frame->bones[tag->boneIndex].matrix[2][3];                      
        
 
-                       return dest;
+                       return i;
                }
        }
 
-       return NULL;
+       *outTag = NULL;
+       return -1;
 }
 
 
@@ -2210,8 +2218,10 @@ int R_LerpTag( orientation_t *tag, const refEntity_t 
*refent, const char *tagNam
        if ( !model->mdv[0] /*&& !model->mdc[0]*/ && !model->mds ) {
                if(model->type == MOD_MDR)
                {
-                       start = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, &start_space);
-                       end = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, &end_space);
+                       start = &start_space;
+                       end = &end_space;
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, startIndex, &start);
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, startIndex, &end);
                }
                else if ( model->type == MOD_IQM ) {
                        return R_IQMLerpTag( tag, model->modelData,
diff --git a/SP/code/renderer/tr_model.c b/SP/code/renderer/tr_model.c
index 3fa4e1c..f2c5aea 100644
--- a/SP/code/renderer/tr_model.c
+++ b/SP/code/renderer/tr_model.c
@@ -1998,12 +1998,13 @@ static int R_GetMDSTag( byte *mod, const char *tagName, 
int startTagIndex, mdsTa
 */
 
 
-md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
md3Tag_t * dest)
+static int R_GetAnimTag( mdrHeader_t *mod, int framenum, const char *tagName, 
int startTagIndex, md3Tag_t **outTag)
 {
        int                             i, j, k;
        int                             frameSize;
        mdrFrame_t              *frame;
        mdrTag_t                *tag;
+       md3Tag_t                *dest = *outTag;
 
        if ( framenum >= mod->numFrames ) 
        {
@@ -2011,10 +2012,16 @@ md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, md3
                framenum = mod->numFrames - 1;
        }
 
+       if ( startTagIndex > mod->numTags ) 
+       {
+               *outTag = NULL;
+               return -1;
+       }
+
        tag = (mdrTag_t *)((byte *)mod + mod->ofsTags);
        for ( i = 0 ; i < mod->numTags ; i++, tag++ )
        {
-               if ( !strcmp( tag->name, tagName ) )
+               if ( ( i >= startTagIndex ) && !strcmp( tag->name, tagName ) )
                {
                        Q_strncpyz(dest->name, tag->name, sizeof(dest->name));
 
@@ -2033,11 +2040,12 @@ md3Tag_t *R_GetAnimTag( mdrHeader_t *mod, int framenum, 
const char *tagName, md3
                        
dest->origin[1]=frame->bones[tag->boneIndex].matrix[1][3];
                        
dest->origin[2]=frame->bones[tag->boneIndex].matrix[2][3];                      
        
 
-                       return dest;
+                       return i;
                }
        }
 
-       return NULL;
+       *outTag = NULL;
+       return -1;
 }
 
 
@@ -2080,8 +2088,10 @@ int R_LerpTag( orientation_t *tag, const refEntity_t 
*refent, const char *tagNam
        if ( !model->md3[0] && !model->mdc[0] && !model->mds ) {
                if(model->type == MOD_MDR)
                {
-                       start = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, &start_space);
-                       end = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, &end_space);
+                       start = &start_space;
+                       end = &end_space;
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
startFrame, tagName, startIndex, &start);
+                       retval = R_GetAnimTag((mdrHeader_t *) model->modelData, 
endFrame, tagName, startIndex, &end);
                }
                else if ( model->type == MOD_IQM ) {
                        return R_IQMLerpTag( tag, model->modelData,

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/iortcw.git

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to