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 fd642480025b9c6258619e66c4df51f90116ed23 Author: zturtle...@gmail.com <zturtle...@gmail.com@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a> Date: Fri Mar 14 23:12:22 2014 +0000 MP: Fix control point flag model animations in CGame QVM QVM cannot initialize struct with mixed char/int data correctly. --- MP/code/cgame/cg_ents.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++--- MP/code/cgame/cg_main.c | 3 +++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/MP/code/cgame/cg_ents.c b/MP/code/cgame/cg_ents.c index abf98a9..41df60d 100644 --- a/MP/code/cgame/cg_ents.c +++ b/MP/code/cgame/cg_ents.c @@ -1122,8 +1122,39 @@ static void CG_Bat( centity_t *cent ) { CG_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin, cgs.media.batsFlyingLoopSound, 5 ); } +static animation_t grabberAnims[6]; +static animation_t footlockerAnims[3]; +static animation_t multi_flagpoleAnims[9]; + +typedef struct { + char *name; // for QVM this cannot be char name[MAX_QPATH]; + int firstFrame; + int numFrames; + int loopFrames; // 0 to numFrames + int frameLerp; // msec between frames + int initialLerp; // msec to get to first frame + int moveSpeed; + int animBlend; // take this long to blend to next anim + // + // derived + // + int duration; + int nameHash; + int flags; + int movetype; +} animationInline_t; + +static void CG_InlineAnimToFullAnim( const animationInline_t *inl, animation_t *anim ) { + Com_Memset( anim, 0, sizeof ( animation_t ) ); + anim->firstFrame = inl->firstFrame; + anim->numFrames = inl->numFrames; + anim->loopFrames = inl->loopFrames; + anim->frameLerp = inl->frameLerp; + anim->initialLerp = inl->initialLerp; +} + //----(SA) animation_t struct changed, so changes are to keep this working -static animation_t grabberAnims[] = { +static animationInline_t grabberAnimsInline[6] = { {"", 0, 6, 6, 1000 / 5, 1000 / 5 }, // (main idle) {"", 5, 21, 21, 1000 / 7, 1000 / 7 }, // (random idle) {"", 25, 11, 0, 1000 / 15, 1000 / 15 }, // (attack big swipe) @@ -1133,7 +1164,7 @@ static animation_t grabberAnims[] = { }; //----(SA) added -static animation_t footlockerAnims[] = { +static animationInline_t footlockerAnimsInline[3] = { {"", 0, 1, 1, 1000 / 5, 1000 / 5 }, // (main idle) {"", 0, 5, 5, 1000 / 5, 1000 / 5 }, // (lock rattle) {"", 5, 6, 0, 1000 / 5, 1000 / 5 } // (break open) @@ -1143,7 +1174,7 @@ static animation_t footlockerAnims[] = { // DHM - Nerve :: capture and hold flag -static animation_t multi_flagpoleAnims[] = { +static animationInline_t multi_flagpoleAnimsInline[] = { {"", 0, 1, 0, 1000 / 15, 1000 / 15 }, // (no flags, idle) {"", 0, 15, 0, 1000 / 15, 1000 / 15 }, // (axis flag rising) {"", 490, 15, 0, 1000 / 15, 1000 / 15 }, // (american flag rising) @@ -1157,6 +1188,25 @@ static animation_t multi_flagpoleAnims[] = { // dhm - end +/* +=============== +CG_InitTrapAnimations +=============== +*/ +void CG_InitTrapAnimations( void ) { + int i; + + for ( i = 0; i < ARRAY_LEN(grabberAnims); i++ ) { + CG_InlineAnimToFullAnim( &grabberAnimsInline[i], &grabberAnims[i] ); + } + for ( i = 0; i < ARRAY_LEN(footlockerAnims); i++ ) { + CG_InlineAnimToFullAnim( &footlockerAnimsInline[i], &footlockerAnims[i] ); + } + for ( i = 0; i < ARRAY_LEN(multi_flagpoleAnims); i++ ) { + CG_InlineAnimToFullAnim( &multi_flagpoleAnimsInline[i], &multi_flagpoleAnims[i] ); + } +} + extern void CG_RunLerpFrame( clientInfo_t *ci, lerpFrame_t *lf, int newAnimation, float speedScale ); diff --git a/MP/code/cgame/cg_main.c b/MP/code/cgame/cg_main.c index 90e66f8..6084681 100644 --- a/MP/code/cgame/cg_main.c +++ b/MP/code/cgame/cg_main.c @@ -2252,6 +2252,7 @@ extern qboolean initTrails; void CG_ClearTrails( void ); extern qboolean initparticles; void CG_ClearParticles( void ); +void CG_InitTrapAnimations( void ); /* ================= @@ -2357,6 +2358,8 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum ) { CG_InitMarkPolys(); + CG_InitTrapAnimations(); + // remove the last loading update cg.infoScreenText[0] = 0; -- 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