[iortcw] 113/497: All: Make R_LerpTag for MDR use startIndex and return tag index

2017-09-08 Thread Simon McVittie
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 

Date:   Fri May 9 23:02:35 2014 +

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

[iortcw] 113/497: All: Make R_LerpTag for MDR use startIndex and return tag index

2016-09-21 Thread Simon McVittie
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 

Date:   Fri May 9 23:02:35 2014 +

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