From 487a652aa86c1777ca74a9e369b567a5bdc04850 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Sun, 15 Oct 2023 03:52:11 +0500 Subject: [PATCH] utils: mdldec: qc.c: calculate sequence group size. --- utils/mdldec/qc.c | 26 +++++++++++++++++++++++++- utils/mdldec/qc.h | 1 + 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/utils/mdldec/qc.c b/utils/mdldec/qc.c index 604e7fb2..4ce21666 100644 --- a/utils/mdldec/qc.c +++ b/utils/mdldec/qc.c @@ -15,6 +15,7 @@ GNU General Public License for more details. #include #include +#include "xash3d_mathlib.h" #include "eiface.h" #include "studio.h" #include "crtlib.h" @@ -435,6 +436,29 @@ static void WriteHitBoxInfo( FILE *fp ) fputs( "\n", fp ); } +/* +============ +CalcSequenceGroupSize +============ +*/ +static int CalcSequenceGroupSize( void ) +{ + int i, maxsize = 0, groupsize = DEFAULT_SEQGROUPSIZE; + + for( i = 1; i < model_hdr->numseqgroups; i++ ) + maxsize = Q_max( anim_hdr[i]->length, maxsize ); + + if( maxsize > 0 ) + { + groupsize = maxsize / 1024; + + if( maxsize % 1024 ) + groupsize++; + } + + return groupsize; +} + /* ============ WriteSequenceInfo @@ -449,7 +473,7 @@ static void WriteSequenceInfo( FILE *fp ) mstudioseqdesc_t *seqdesc; if( model_hdr->numseqgroups > 1 ) - fputs( "$sequencegroupsize 64\n\n", fp ); + fprintf( fp, "$sequencegroupsize %d\n\n", CalcSequenceGroupSize( ) ); if( model_hdr->numseq > 0 ) fprintf( fp, "// %i animation sequence(s)\n", model_hdr->numseq ); diff --git a/utils/mdldec/qc.h b/utils/mdldec/qc.h index 05d538ac..75d8b5bc 100644 --- a/utils/mdldec/qc.h +++ b/utils/mdldec/qc.h @@ -16,6 +16,7 @@ GNU General Public License for more details. #ifndef QC_H #define QC_H +#define DEFAULT_SEQGROUPSIZE 64 #define ACTIVITIES_FILE "activities.txt" qboolean LoadActivityList( const char *appname );