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 b1b283f4f6a10428ad1c6adf901cd104093ae9f3 Author: [email protected] <[email protected]@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a> Date: Mon Sep 8 19:45:04 2014 +0000 SP: Fix a bunch of stuff flagged by clang analyzer --- MP/code/client/snd_mix.c | 4 ++ MP/code/game/ai_cast_events.c | 4 +- SP/Makefile | 4 ++ SP/code/botlib/be_aas_reach.c | 5 +- SP/code/botlib/be_aas_route.c | 4 +- SP/code/botlib/be_aas_sample.c | 8 ++- SP/code/botlib/be_ai_move.c | 4 ++ SP/code/botlib/l_precomp.c | 17 ++---- SP/code/cgame/cg_draw.c | 25 +++------ SP/code/cgame/cg_drawtools.c | 3 - SP/code/cgame/cg_effects.c | 30 +++++----- SP/code/cgame/cg_flamethrower.c | 3 +- SP/code/cgame/cg_info.c | 4 +- SP/code/cgame/cg_localents.c | 4 -- SP/code/cgame/cg_marks.c | 2 +- SP/code/cgame/cg_newdraw.c | 7 --- SP/code/cgame/cg_players.c | 19 +++---- SP/code/cgame/cg_scoreboard.c | 11 +--- SP/code/cgame/cg_view.c | 11 ---- SP/code/cgame/cg_weapons.c | 16 +----- SP/code/client/cl_ui.c | 2 +- SP/code/client/snd_mix.c | 20 +++++-- SP/code/client/snd_wavelet.c | 4 +- SP/code/game/ai_cast_events.c | 7 ++- SP/code/game/ai_cast_fight.c | 2 +- SP/code/game/ai_cast_func_boss1.c | 2 +- SP/code/game/ai_cast_funcs.c | 30 ++++------ SP/code/game/ai_cast_script.c | 1 - SP/code/game/ai_cast_script_actions.c | 2 +- SP/code/game/ai_cast_sight.c | 4 +- SP/code/game/ai_cast_think.c | 10 ++-- SP/code/game/ai_dmq3.c | 2 +- SP/code/game/ai_main.c | 4 ++ SP/code/game/ai_team.c | 6 +- SP/code/game/bg_animation.c | 12 +++- SP/code/game/bg_misc.c | 1 - SP/code/game/bg_pmove.c | 24 +++----- SP/code/game/g_active.c | 11 ++-- SP/code/game/g_alarm.c | 8 ++- SP/code/game/g_items.c | 8 ++- SP/code/game/g_misc.c | 6 +- SP/code/game/g_mover.c | 2 +- SP/code/game/g_props.c | 6 +- SP/code/game/g_save.c | 2 +- SP/code/game/g_script.c | 1 - SP/code/game/g_target.c | 2 +- SP/code/game/g_team.c | 3 +- SP/code/game/g_tramcar.c | 4 ++ SP/code/qcommon/files.c | 4 ++ SP/code/qcommon/msg.c | 5 +- SP/code/rend2/tr_backend.c | 9 +++ SP/code/rend2/tr_bsp.c | 10 ++-- SP/code/rend2/tr_flares.c | 2 +- SP/code/rend2/tr_image.c | 69 ++--------------------- SP/code/rend2/tr_init.c | 6 +- SP/code/rend2/tr_local.h | 2 - SP/code/rend2/tr_model.c | 6 +- SP/code/rend2/tr_model_iqm.c | 2 +- SP/code/rend2/tr_shade_calc.c | 2 +- SP/code/rend2/tr_shader.c | 2 +- SP/code/rend2/tr_surface.c | 103 +--------------------------------- SP/code/rend2/tr_world.c | 3 + SP/code/renderer/tr_backend.c | 3 +- SP/code/renderer/tr_bsp.c | 8 +-- SP/code/renderer/tr_flares.c | 2 +- SP/code/renderer/tr_image.c | 75 +++++-------------------- SP/code/renderer/tr_init.c | 6 +- SP/code/renderer/tr_local.h | 2 - SP/code/renderer/tr_model.c | 22 ++++---- SP/code/renderer/tr_model_iqm.c | 2 +- SP/code/renderer/tr_shade_calc.c | 6 +- SP/code/renderer/tr_surface.c | 95 ------------------------------- SP/code/renderer/tr_world.c | 10 ++-- SP/code/splines/splines.cpp | 11 +++- SP/code/ui/ui_main.c | 2 +- SP/code/ui/ui_players.c | 5 ++ SP/code/ui/ui_shared.c | 5 +- 77 files changed, 266 insertions(+), 584 deletions(-) diff --git a/MP/code/client/snd_mix.c b/MP/code/client/snd_mix.c index 1efe1e3..943c50f 100644 --- a/MP/code/client/snd_mix.c +++ b/MP/code/client/snd_mix.c @@ -236,6 +236,10 @@ static void S_PaintChannelFrom16_altivec( channel_t *ch, const sfx_t *sc, int co short *samples; float ooff, fdata[2], fdiv, fleftvol, frightvol; + if (sc->soundChannels <= 0) { + return; + } + samp = &paintbuffer[ bufferOffset ]; if (ch->doppler) { diff --git a/MP/code/game/ai_cast_events.c b/MP/code/game/ai_cast_events.c index f317a66..f52606d 100644 --- a/MP/code/game/ai_cast_events.c +++ b/MP/code/game/ai_cast_events.c @@ -173,7 +173,7 @@ void AICast_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int } // record the sighting (FIXME: silent weapons shouldn't do this, but the AI should react in some way) - if ( attacker && attacker != self ) { + if ( attacker && attacker->client ) { AICast_UpdateVisibility( self, attacker, qtrue, qtrue ); } @@ -316,7 +316,7 @@ void AICast_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int // set enemy weapon BG_UpdateConditionValue( self->s.number, ANIM_COND_ENEMY_WEAPON, 0, qfalse ); - if ( attacker && attacker != self ) { + if ( attacker && attacker->client ) { BG_UpdateConditionValue( self->s.number, ANIM_COND_ENEMY_WEAPON, inflictor->s.weapon, qtrue ); } else { BG_UpdateConditionValue( self->s.number, ANIM_COND_ENEMY_WEAPON, 0, qfalse ); diff --git a/SP/Makefile b/SP/Makefile index 6b01648..4896b0a 100644 --- a/SP/Makefile +++ b/SP/Makefile @@ -1141,6 +1141,10 @@ ifeq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) BASE_CFLAGS += -Qunused-arguments endif +ifeq ("$(CXX)", $(findstring "$(CXX)", "clang" "clang++")) + BASE_CFLAGS += -Qunused-arguments +endif + ifdef DEFAULT_BASEDIR BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" endif diff --git a/SP/code/botlib/be_aas_reach.c b/SP/code/botlib/be_aas_reach.c index 63fd841..ecede77 100644 --- a/SP/code/botlib/be_aas_reach.c +++ b/SP/code/botlib/be_aas_reach.c @@ -3455,13 +3455,14 @@ void AAS_Reachability_JumpPad( void ) { velocity[2] = time * gravity; //get the areas the jump pad brush is in areas = AAS_LinkEntityClientBBox( absmins, absmaxs, -1, PRESENCE_CROUCH ); - //* + /* for ( link = areas; link; link = link->next_area ) { if ( link->areanum == 5772 ) { ret = qfalse; } - } //*/ + } + */ for ( link = areas; link; link = link->next_area ) { if ( AAS_AreaJumpPad( link->areanum ) ) { diff --git a/SP/code/botlib/be_aas_route.c b/SP/code/botlib/be_aas_route.c index fd90d7b..31580e3 100644 --- a/SP/code/botlib/be_aas_route.c +++ b/SP/code/botlib/be_aas_route.c @@ -1020,8 +1020,6 @@ aas_routingcache_t *AAS_ReadCache( fileHandle_t fp ) { numtraveltimes = ( size - sizeof( aas_routingcache_32_t ) ) / 3; - cache_reachabilities = (unsigned char *) cache + sizeof( aas_routingcache_32_t ) + numtraveltimes * sizeof (cache->traveltimes[0]); - if ( sizeof (intptr_t) == 4 ) { nativecache = (aas_routingcache_t *) cache; } else { @@ -1052,6 +1050,8 @@ aas_routingcache_t *AAS_ReadCache( fileHandle_t fp ) { // copy reachabilities to native structure, free original cache if ( sizeof (intptr_t) != 4 ) { for ( i = 0; i < numtraveltimes; i++ ) { + cache_reachabilities = (unsigned char *) cache + sizeof( aas_routingcache_32_t ) + numtraveltimes * sizeof (cache->traveltimes[0]); + nativecache->reachabilities[i] = cache_reachabilities[i]; } diff --git a/SP/code/botlib/be_aas_sample.c b/SP/code/botlib/be_aas_sample.c index 997cc9b..2eaba08 100644 --- a/SP/code/botlib/be_aas_sample.c +++ b/SP/code/botlib/be_aas_sample.c @@ -411,9 +411,11 @@ aas_trace_t AAS_TraceClientBBox( vec3_t start, vec3_t end, int presencetype, //exactly the same when they're both the start point if ( tstack_p->start[0] == start[0] && tstack_p->start[1] == start[1] && - tstack_p->start[2] == start[2] ) { + tstack_p->start[2] == start[2] ) + { trace.startsolid = qtrue; trace.fraction = 0.0; + VectorClear(v1); } //end if else { @@ -460,9 +462,11 @@ aas_trace_t AAS_TraceClientBBox( vec3_t start, vec3_t end, int presencetype, //exactly the same when they're both the start point if ( tstack_p->start[0] == start[0] && tstack_p->start[1] == start[1] && - tstack_p->start[2] == start[2] ) { + tstack_p->start[2] == start[2] ) + { trace.startsolid = qtrue; trace.fraction = 0.0; + VectorClear(v1); } //end if else { diff --git a/SP/code/botlib/be_ai_move.c b/SP/code/botlib/be_ai_move.c index dfcab07..6f5af51 100644 --- a/SP/code/botlib/be_ai_move.c +++ b/SP/code/botlib/be_ai_move.c @@ -1211,6 +1211,9 @@ int Intersection( vec2_t p1, vec2_t p2, vec2_t p3, vec2_t p4, vec2_t out ) { // Changes Globals: - //=========================================================================== void BotCheckBlocked( bot_movestate_t *ms, vec3_t dir, int checkbottom, bot_moveresult_t *result ) { + // RF, not required for Wolf AI + return; +#if 0 vec3_t mins, maxs, end, up = {0, 0, 1}; bsp_trace_t trace; @@ -1249,6 +1252,7 @@ void BotCheckBlocked( bot_movestate_t *ms, vec3_t dir, int checkbottom, bot_move #endif //DEBUG } //end if } //end else +#endif } //end of the function BotCheckBlocked //=========================================================================== // diff --git a/SP/code/botlib/l_precomp.c b/SP/code/botlib/l_precomp.c index 9fd28eb..22fd3f1 100644 --- a/SP/code/botlib/l_precomp.c +++ b/SP/code/botlib/l_precomp.c @@ -1167,25 +1167,20 @@ int PC_Directive_define( source_t *source ) { #else define = PC_FindDefine( source->defines, token.string ); #endif //DEFINEHASHING - if ( define ) { - if ( define->flags & DEFINE_FIXED ) { + if ( define ) + { + if ( define->flags & DEFINE_FIXED ) + { SourceError( source, "can't redefine %s", token.string ); return qfalse; } //end if SourceWarning( source, "redefinition of %s", token.string ); //unread the define name before executing the #undef directive PC_UnreadSourceToken( source, &token ); - if ( !PC_Directive_undef( source ) ) { + if ( !PC_Directive_undef( source ) ) return qfalse; - } - //if the define was not removed (define->flags & DEFINE_FIXED) -#if DEFINEHASHING - define = PC_FindHashedDefine( source->definehash, token.string ); -#else - define = PC_FindDefine( source->defines, token.string ); -#endif //DEFINEHASHING } //end if - //allocate define + //allocate define define = (define_t *) GetMemory(sizeof(define_t)); memset( define, 0, sizeof( define_t ) ); define->name = (char *) GetMemory(strlen(token.string) + 1); diff --git a/SP/code/cgame/cg_draw.c b/SP/code/cgame/cg_draw.c index 4f310c5..5009433 100644 --- a/SP/code/cgame/cg_draw.c +++ b/SP/code/cgame/cg_draw.c @@ -1195,7 +1195,7 @@ static void CG_DrawUpperRight(stereoFrame_t stereoFrame) { y = CG_DrawFPS( y ); } if ( cg_drawTimer.integer ) { - y = CG_DrawTimer( y ); + CG_DrawTimer( y ); } // (SA) disabling drawattacker for the time being // if ( cg_drawAttacker.integer ) { @@ -3180,8 +3180,6 @@ CG_DrawFlashLightning ================= */ static void CG_DrawFlashLightning( void ) { - //vec4_t col={1,1,1,1}; // TTimo: unused - float alpha; centity_t *cent; qhandle_t shader; @@ -3199,20 +3197,13 @@ static void CG_DrawFlashLightning( void ) { return; } - alpha = 1.0 - (float)( cg.time - cent->pe.teslaDamagedTime ) / LIGHTNING_FLASH_TIME; - if ( alpha > 0 ) { - if ( alpha >= 1.0 ) { - alpha = 1.0; - } - - if ( ( cg.time / 50 ) % ( 2 + ( cg.time % 2 ) ) == 0 ) { - shader = cgs.media.viewTeslaAltDamageEffectShader; - } else { - shader = cgs.media.viewTeslaDamageEffectShader; - } - - CG_DrawPic( -10, -10, 650, 490, shader ); + if ( ( cg.time / 50 ) % ( 2 + ( cg.time % 2 ) ) == 0 ) { + shader = cgs.media.viewTeslaAltDamageEffectShader; + } else { + shader = cgs.media.viewTeslaDamageEffectShader; } + + CG_DrawPic( -10, -10, 650, 490, shader ); } @@ -3314,8 +3305,6 @@ static void CG_DrawObjectiveInfo( void ) { x2 = x1 + w; } - x = OID_LEFT; - y += cg.oidPrintCharWidth * 1.5; while ( *start && ( *start != '\n' ) ) { diff --git a/SP/code/cgame/cg_drawtools.c b/SP/code/cgame/cg_drawtools.c index a121fe7..dff1484 100644 --- a/SP/code/cgame/cg_drawtools.c +++ b/SP/code/cgame/cg_drawtools.c @@ -516,9 +516,6 @@ void CG_DrawStringExt3( int x, int y, const char *string, const float *setColor, x -= xx; - s = string; - xx = x; - // draw the drop shadow if ( shadow ) { color[0] = color[1] = color[2] = 0; diff --git a/SP/code/cgame/cg_effects.c b/SP/code/cgame/cg_effects.c index 4974217..2534446 100644 --- a/SP/code/cgame/cg_effects.c +++ b/SP/code/cgame/cg_effects.c @@ -267,10 +267,13 @@ localEntity_t *CG_MakeExplosion( vec3_t origin, vec3_t dir, VectorCopy( newOrigin, ex->refEntity.oldorigin ); // Ridah, move away from the wall as the sprite expands - ex->pos.trType = TR_LINEAR; - ex->pos.trTime = cg.time; - VectorCopy( newOrigin, ex->pos.trBase ); - VectorScale( dir, 48, ex->pos.trDelta ); + if ( dir ) + { + ex->pos.trType = TR_LINEAR; + ex->pos.trTime = cg.time; + VectorCopy( newOrigin, ex->pos.trBase ); + VectorScale( dir, 48, ex->pos.trDelta ); + } // done. ex->color[0] = ex->color[1] = ex->color[2] = 1.0; @@ -427,6 +430,10 @@ void CG_LaunchGib( centity_t *cent, vec3_t origin, vec3_t angles, vec3_t velocit refEntity_t *re; int i; + if ( !cent ) { + return; + } + le = CG_AllocLocalEntity(); re = &le->refEntity; @@ -668,7 +675,7 @@ void CG_GibPlayer( centity_t *cent, vec3_t playerOrigin, vec3_t gdir ) { vec3_t junctionOrigin[MAXJUNCTIONS]; int junction; int j; - float size; + float size = 0.0; vec3_t axis[3], angles; char *JunctiongibTags[] = { @@ -833,7 +840,7 @@ void CG_GibPlayer( centity_t *cent, vec3_t playerOrigin, vec3_t gdir ) { VectorCopy( junctionOrigin[i], origin ); if ( ( cent->currentState.aiChar == AICHAR_HELGA ) || ( cent->currentState.aiChar == AICHAR_HEINRICH ) ) { - size *= 3.0; + //size *= 3.0; velocity[0] = crandom() * GIB_VELOCITY * 2.0; velocity[1] = crandom() * GIB_VELOCITY * 2.0; velocity[2] = GIB_JUMP + random() * GIB_VELOCITY; @@ -1371,6 +1378,7 @@ void CG_Spotlight( centity_t *cent, float *color, vec3_t realstart, vec3_t light // first trace to see if anything is hit if ( flags & SL_NOTRACE ) { tr.fraction = 1.0; // force no hit + VectorCopy(traceEnd, tr.endpos); } else { if ( flags & SL_TRACEWORLDONLY ) { CG_Trace( &tr, start, NULL, NULL, traceEnd, -1, CONTENTS_SOLID ); @@ -1604,7 +1612,7 @@ void CG_Spotlight( centity_t *cent, float *color, vec3_t realstart, vec3_t light if ( !( flags & SL_NODLIGHT ) ) { vec3_t dlightLoc; // VectorMA(tr.endpos, -60, lightDir, dlightLoc); // back away from the hit - VectorMA( tr.endpos, 0, lightDir, dlightLoc ); // back away from the hit + VectorCopy( tr.endpos, dlightLoc ); // back away from the hit // trap_R_AddLightToScene(dlightLoc, 200, colorNorm[0], colorNorm[1], colorNorm[2], 0); // ,REF_JUNIOR_DLIGHT); // trap_R_AddLightToScene(dlightLoc, radius*2, colorNorm[0], colorNorm[1], colorNorm[2], 0); // ,REF_JUNIOR_DLIGHT); trap_R_AddLightToScene( dlightLoc, radius * 2, 0.3, 0.3, 0.3, 0 ); // ,REF_JUNIOR_DLIGHT); @@ -1673,12 +1681,6 @@ void CG_RumbleEfx( float pitch, float yaw ) { float yawRandom; vec3_t recoil; - // - pitchRecoilAdd = 0; - pitchAdd = 0; - yawRandom = 0; - // - if ( pitch < 1 ) { pitch = 1; } @@ -1703,5 +1705,3 @@ void CG_RumbleEfx( float pitch, float yaw ) { cg.recoilPitch -= pitchRecoilAdd; } - - diff --git a/SP/code/cgame/cg_flamethrower.c b/SP/code/cgame/cg_flamethrower.c index 8f445d3..257bae1 100644 --- a/SP/code/cgame/cg_flamethrower.c +++ b/SP/code/cgame/cg_flamethrower.c @@ -277,7 +277,7 @@ void CG_FireFlameChunks( centity_t *cent, vec3_t origin, vec3_t angles, float sp // if this entity was firing last frame, interpolate the angles as we spawn the chunks that // fired over the last frame - if ( ( centInfo->lastClientFrame == cent->currentState.frame ) && + if ( ( centInfo->lastClientFrame == cent->currentState.frame ) && ( centInfo->lastFlameChunk && centInfo->lastFiring == firing ) ) { AngleVectors( centInfo->lastAngles, lastFwd, lastRight, lastUp ); VectorCopy( centInfo->lastOrigin, lastOrg ); @@ -379,7 +379,6 @@ void CG_FireFlameChunks( centity_t *cent, vec3_t origin, vec3_t angles, float sp } else { centInfo->lastFiring = firing; - t = cg.time; VectorCopy( thisOrg, org ); diff --git a/SP/code/cgame/cg_info.c b/SP/code/cgame/cg_info.c index f1e3fe4..ee0d8d1 100644 --- a/SP/code/cgame/cg_info.c +++ b/SP/code/cgame/cg_info.c @@ -361,7 +361,7 @@ void CG_DrawExitStats( void ) { CG_Text_Paint( statsItems[i].labelX, y, 2, 0.3, color2, va( "%s:", CG_translateString( statsItems[i].label ) ), 0, 0, statsItems[i].labelFlags ); } - token = COM_Parse( &mstats ); + COM_Parse( &mstats ); // end (parse it) } @@ -410,7 +410,7 @@ void CG_DrawInformation( void ) { } if ( !levelshot ) { - levelshot = trap_R_RegisterShaderNoMip( "levelshots/unknownmap.jpg" ); + trap_R_RegisterShaderNoMip( "levelshots/unknownmap.jpg" ); } trap_R_SetColor( NULL ); diff --git a/SP/code/cgame/cg_localents.c b/SP/code/cgame/cg_localents.c index 178fcc4..63d7862 100644 --- a/SP/code/cgame/cg_localents.c +++ b/SP/code/cgame/cg_localents.c @@ -1000,9 +1000,6 @@ void CG_AddClientCritter( localEntity_t *le ) { // calculate new position BG_EvaluateTrajectory( &le->pos, time, newOrigin ); - VectorSubtract( enemyPos, le->refEntity.origin, v ); - enemyDist = VectorNormalize( v ); - // trace a line from previous position to new position CG_Trace( &trace, le->refEntity.origin, NULL, NULL, newOrigin, le->ownerNum, MASK_SHOT ); @@ -1071,7 +1068,6 @@ void CG_AddClientCritter( localEntity_t *le ) { oldSpeed = VectorLength( le->pos.trDelta ); // track the enemy - backup = *le; VectorSubtract( enemyPos, le->refEntity.origin, v ); enemyDist = VectorNormalize( v ); diff --git a/SP/code/cgame/cg_marks.c b/SP/code/cgame/cg_marks.c index b7358b6..6cb3007 100644 --- a/SP/code/cgame/cg_marks.c +++ b/SP/code/cgame/cg_marks.c @@ -72,7 +72,7 @@ CG_FreeMarkPoly ================== */ void CG_FreeMarkPoly( markPoly_t *le ) { - if ( !le->prevMark ) { + if ( !le->prevMark || !le->nextMark ) { CG_Error( "CG_FreeLocalEntity: not active" ); } diff --git a/SP/code/cgame/cg_newdraw.c b/SP/code/cgame/cg_newdraw.c index fecff36..6e5b01a 100644 --- a/SP/code/cgame/cg_newdraw.c +++ b/SP/code/cgame/cg_newdraw.c @@ -679,8 +679,6 @@ static void CG_DrawPlayerHead( rectDef_t *rect, qboolean draw2D ) { cg.headEndYaw = 180 + 20 * cos( crandom() * M_PI ); cg.headEndPitch = 5 * cos( crandom() * M_PI ); } - - size = rect->w * 1.25; } // if the server was frozen for a while we may have a bad head start time @@ -981,8 +979,6 @@ static void CG_DrawSelectedPlayerPowerup( rectDef_t *rect, qboolean draw2D ) { item = BG_FindItemForPowerup( j ); if ( item ) { CG_DrawPic( x, y, rect->w, rect->h, trap_R_RegisterShader( item->icon ) ); - x += 3; - y += 3; return; } } @@ -2168,9 +2164,6 @@ static void CG_DrawFatigue( rectDef_t *rect, vec4_t color, int align ) { int flags = 0; float chargeTime; // DHM - Nerve - barFrac = (float)cg.snap->ps.sprintTime / SPRINTTIME; -// omBarFrac = 1.0f-barFrac; - if ( align != HUD_HORIZONTAL ) { flags |= 4; // BAR_VERT flags |= 1; // BAR_LEFT (left, when vertical means grow 'up') diff --git a/SP/code/cgame/cg_players.c b/SP/code/cgame/cg_players.c index 311a769..c24cf9d 100644 --- a/SP/code/cgame/cg_players.c +++ b/SP/code/cgame/cg_players.c @@ -1767,6 +1767,10 @@ void CG_RunLerpFrame( clientInfo_t *ci, lerpFrame_t *lf, int newAnimation, float // get the next frame based on the animation anim = lf->animation; + + if ( !anim ) + return; + if ( !anim->frameLerp ) { return; // shouldn't happen } @@ -3485,9 +3489,7 @@ void CG_AddZombieSpiritEffect( centity_t *cent ) { fadeRatio = 1.0; } - if ( cent->pe.cueZombieSpirit ) { - alpha = fadeRatio; - } else { + if ( !cent->pe.cueZombieSpirit ) { alpha = 1.0 - ( (float)( cg.time - cent->pe.zombieSpiritEndTime ) / (float)fadeOutTime ); fadeRatio = alpha; if ( alpha < 0.0 ) { @@ -3617,9 +3619,7 @@ void CG_AddZombieFlameEffect( centity_t *cent ) { fadeRatio = 1.0; } - if ( cent->pe.cueZombieSpirit ) { - alpha = fadeRatio; - } else { + if ( !cent->pe.cueZombieSpirit ) { alpha = ( (float)( cent->pe.zombieSpiritEndTime - cg.time ) / (float)fadeOutTime ); fadeRatio = alpha; if ( alpha < 0.0 ) { @@ -3860,7 +3860,6 @@ void CG_AddLoperGroundEffect( centity_t *cent ) { } } else { cent->pe.loperGroundValidTime = cg.time; - duration = LOPER_GROUNDCHARGE_DURATION; alpha = 1.0; lightAlpha = 1.0; } @@ -4223,9 +4222,7 @@ void CG_AddHelgaSpiritEffect( centity_t *cent ) { fadeRatio = 1.0; } - if ( cent->pe.cueZombieSpirit ) { - alpha = fadeRatio; - } else { + if ( !cent->pe.cueZombieSpirit ) { alpha = 1.0 - ( (float)( cg.time - cent->pe.zombieSpiritEndTime ) / (float)fadeOutTime ); fadeRatio = alpha; if ( alpha < 0.0 ) { @@ -5046,7 +5043,7 @@ void CG_Player( centity_t *cent ) { cent->pe.headRefEnt = head; // add the shadow - shadow = CG_PlayerShadow( cent, &shadowPlane ); + CG_PlayerShadow( cent, &shadowPlane ); // set the shadowplane for accessories acc.shadowPlane = shadowPlane; diff --git a/SP/code/cgame/cg_scoreboard.c b/SP/code/cgame/cg_scoreboard.c index ff75f4d..341f9cb 100644 --- a/SP/code/cgame/cg_scoreboard.c +++ b/SP/code/cgame/cg_scoreboard.c @@ -200,7 +200,6 @@ static void WM_DrawClientScore( int x, int y, score_t *score, float *color, floa tempx += INFO_SCORE_WIDTH; CG_FillRect( tempx, y + 1, INFO_LATENCY_WIDTH - INFO_BORDER, SMALLCHAR_HEIGHT - 1, hcolor ); - tempx += INFO_LATENCY_WIDTH; } tempx = x; @@ -213,7 +212,6 @@ static void WM_DrawClientScore( int x, int y, score_t *score, float *color, floa tempx += INFO_SCORE_WIDTH; CG_DrawSmallString( tempx, y, va( "%4i", score->ping ), fade ); - tempx += INFO_LATENCY_WIDTH; } /* @@ -266,7 +264,6 @@ static int WM_TeamScoreboard( int x, int y, team_t team, float fade ) { tempx += INFO_SCORE_WIDTH; CG_FillRect( tempx, y, INFO_LATENCY_WIDTH - INFO_BORDER, INFO_TEAM_HEIGHT, hcolor ); - tempx += INFO_LATENCY_WIDTH; // draw player info VectorSet( hcolor, 1, 1, 1 ); @@ -423,7 +420,6 @@ int WM_ScoreboardOverlay( int x, int y, float fade ) { x += INFO_SCORE_WIDTH; CG_DrawSmallString( x, y, "Latency", fade ); - x += INFO_LATENCY_WIDTH; y += 20; @@ -468,7 +464,6 @@ qboolean CG_DrawScoreboard( void ) { if ( cg.showScores || cg.predictedPlayerState.pm_type == PM_DEAD || cg.predictedPlayerState.pm_type == PM_INTERMISSION ) { fade = 1.0; - fadeColor = colorWhite; } else { fadeColor = CG_FadeColor( cg.scoreFadeTime, FADE_TIME ); @@ -553,7 +548,7 @@ qboolean CG_DrawScoreboard( void ) { y = WM_TeamScoreboard( x, y, TEAM_BLUE, fade ); y = WM_TeamScoreboard( x, y, TEAM_RED, fade ); } - y = WM_TeamScoreboard( x, y, TEAM_SPECTATOR, fade ); + WM_TeamScoreboard( x, y, TEAM_SPECTATOR, fade ); } // -NERVE - SMF else if ( cgs.gametype >= GT_TEAM ) { @@ -567,14 +562,14 @@ qboolean CG_DrawScoreboard( void ) { y = CG_TeamScoreboard( x, y, TEAM_BLUE, fade ); y = CG_TeamScoreboard( x, y, TEAM_RED, fade ); } - y = CG_TeamScoreboard( x, y, TEAM_SPECTATOR, fade ); + CG_TeamScoreboard( x, y, TEAM_SPECTATOR, fade ); } else if ( cgs.gametype != GT_SINGLE_PLAYER ) { //----(SA) modified // // free for all scoreboard // y = CG_TeamScoreboard( x, y, TEAM_FREE, fade ); - y = CG_TeamScoreboard( x, y, TEAM_SPECTATOR, fade ); + CG_TeamScoreboard( x, y, TEAM_SPECTATOR, fade ); } // load any models that have been deferred diff --git a/SP/code/cgame/cg_view.c b/SP/code/cgame/cg_view.c index 10c8b5d..135f916 100644 --- a/SP/code/cgame/cg_view.c +++ b/SP/code/cgame/cg_view.c @@ -457,16 +457,11 @@ void CG_Concussive( centity_t *cent ) { if ( !cg.renderingThirdPerson && cent->currentState.density == cg.snap->ps.clientNum ) { // pitchRecoilAdd = 0; - pitchAdd = 0; - yawRandom = 0; // VectorSubtract( cg.snap->ps.origin, cent->currentState.origin, vec ); length = VectorLength( vec ); - // pitchAdd = 12+rand()%3; - // yawRandom = 6; - if ( length > 1024 ) { return; } @@ -1242,12 +1237,6 @@ void CG_DrawSkyBoxPortal( void ) { if ( !token || !token[0] ) { CG_Error( "CG_DrawSkyBoxPortal: error parsing skybox configstring\n" ); } - fov_x = atoi( token ); - - if ( !fov_x ) { - fov_x = 90; - } - // setup fog the first time, ignore this part of the configstring after that token = COM_ParseExt( &cstr, qfalse ); diff --git a/SP/code/cgame/cg_weapons.c b/SP/code/cgame/cg_weapons.c index ec3c3dd..5096b4d 100644 --- a/SP/code/cgame/cg_weapons.c +++ b/SP/code/cgame/cg_weapons.c @@ -422,7 +422,6 @@ void CG_PyroSmokeTrail( centity_t *ent, const weaponInfo_t *wi ) { for ( ; t <= ent->trailTime ; t += step ) { BG_EvaluateTrajectory( &es->pos, t, lastPos ); - rnd = random(); //VectorCopy (ent->lerpOrigin, lastPos); @@ -1992,15 +1991,12 @@ static float CG_VenomSpinAngle( centity_t *cent ) { float speed; qboolean firing; - delta = cg.time - cent->pe.barrelTime; - firing = (qboolean)( cent->currentState.eFlags & EF_FIRING ); if ( cg.snap->ps.weaponstate != WEAPON_FIRING ) { // (SA) this seems better firing = qfalse; } - delta = cg.time - cent->pe.barrelTime; if ( cent->pe.barrelSpinning ) { angle = cent->pe.barrelAngle + delta * SPIN_SPEED; @@ -5067,7 +5063,7 @@ void CG_MissileHitWall( int weapon, int clientNum, vec3_t origin, vec3_t dir, in // Ridah int lightOverdraw; vec3_t sprOrg; - vec3_t sprVel; + vec3_t sprVel = { 0 }; int i,j; //----(SA) added @@ -5506,7 +5502,6 @@ void CG_Shard(centity_t *cent, vec3_t origin, vec3_t dir) } // NOTE: these must all have the same duration, so that we are less likely to use a wider range of images per scene - r = 2 + rand() % 3; for ( i = 0; i < 4; i++ ) { if ( weapon == VERYBIGEXPLOSION ) { for ( j = 0; j < 3; j++ ) sprOrg[j] = origin[j] + 32 * dir[j] + 32 * crandom(); @@ -5529,7 +5524,6 @@ void CG_Shard(centity_t *cent, vec3_t origin, vec3_t dir) CG_ParticleExplosion( "explode1", sprOrg, sprVel, 1600, 20, 200 + random() * 400 ); // NOTE: these must all have the same duration, so that we are less likely to use a wider range of images per scene - r = 2 + rand() % 3; for ( i = 0; i < 4; i++ ) { for ( j = 0; j < 3; j++ ) sprOrg[j] = origin[j] + 160 * crandom(); CG_ParticleExplosion( "explode1", sprOrg, sprVel, 1600, 40, 260 + rand() % 120 ); @@ -5629,12 +5623,7 @@ void CG_MissileHitWallSmall( int weapon, int clientNum, vec3_t origin, vec3_t di vec3_t sprVel; // int i,j; - mark = 0; - radius = 32; - sfx = 0; mod = 0; - shader = 0; - light = 0; lightColor[0] = 1; lightColor[1] = 1; lightColor[2] = 0; @@ -5642,9 +5631,6 @@ void CG_MissileHitWallSmall( int weapon, int clientNum, vec3_t origin, vec3_t di lightOverdraw = 0; // set defaults - isSprite = qfalse; - duration = 600; - shader = cgs.media.rocketExplosionShader; // copied from RL sfx = cgs.media.sfx_rockexp; mark = cgs.media.burnMarkShader; diff --git a/SP/code/client/cl_ui.c b/SP/code/client/cl_ui.c index 3802886..b4bf1cd 100644 --- a/SP/code/client/cl_ui.c +++ b/SP/code/client/cl_ui.c @@ -1161,7 +1161,7 @@ void CL_InitUI( void ) { #ifdef WOLF_SP_DEMO uivm = VM_Create( "ui", CL_UISystemCalls, VMI_NATIVE ); #else - uivm = VM_Create( "ui", CL_UISystemCalls, Cvar_VariableValue( "vm_ui" ) ); + uivm = VM_Create( "ui", CL_UISystemCalls, interpret ); #endif if ( !uivm ) { diff --git a/SP/code/client/snd_mix.c b/SP/code/client/snd_mix.c index d61f712..89245bf 100644 --- a/SP/code/client/snd_mix.c +++ b/SP/code/client/snd_mix.c @@ -412,15 +412,17 @@ void S_SetVoiceAmplitudeFromMuLaw( const sfx_t *sc, int sampleOffset, int count, sfx_count = 0; samples = (byte *)chunk->sndChunk + sampleOffset; for ( i = 0; i < count; i++ ) { - if ( samples >= (byte *)chunk->sndChunk + ( SND_CHUNK_SIZE * 2 ) ) { + if ( chunk && ( samples >= (byte *)chunk->sndChunk + ( SND_CHUNK_SIZE * 2 ) ) ) { chunk = chunk->next; samples = (byte *)chunk->sndChunk; } - data = mulawToShort[*samples]; - if ( abs( data ) > 5000 ) { - sfx_count += ( data * 255 ) >> 8; + if ( samples ) { + data = mulawToShort[*samples]; + if ( abs( data ) > 5000 ) { + sfx_count += ( data * 255 ) >> 8; + } + samples++; } - samples++; } //Com_Printf("Voice sfx_count = %d, count = %d\n", sfx_count, count ); // adjust the sfx_count according to the frametime (scale down for longer frametimes) @@ -455,6 +457,10 @@ static void S_PaintChannelFrom16_altivec( channel_t *ch, const sfx_t *sc, int co short *samples; float ooff, fdata[2], fdiv, fleftvol, frightvol; + if (sc->soundChannels <= 0) { + return; + } + samp = &paintbuffer[ bufferOffset ]; if (ch->doppler) { @@ -641,6 +647,10 @@ static void S_PaintChannelFrom16_scalar( channel_t *ch, const sfx_t *sc, int cou short *samples; float ooff, fdata[2], fdiv, fleftvol, frightvol; + if (sc->soundChannels <= 0) { + return; + } + samp = &paintbuffer[ bufferOffset ]; if (ch->doppler) { diff --git a/SP/code/client/snd_wavelet.c b/SP/code/client/snd_wavelet.c index a325ffd..71da208 100644 --- a/SP/code/client/snd_wavelet.c +++ b/SP/code/client/snd_wavelet.c @@ -119,7 +119,7 @@ void NXPutc(NXStream *stream, char out) { void encodeWavelet( sfx_t *sfx, short *packets) { - float wksp[4097], temp; + float wksp[4097] = { 0.0f }, temp; int i, samples, size; sndBuffer *newchunk, *chunk; byte *out; @@ -169,7 +169,7 @@ void encodeWavelet( sfx_t *sfx, short *packets) { } void decodeWavelet(sndBuffer *chunk, short *to) { - float wksp[4097]; + float wksp[4097] = { 0.0f }; int i; byte *out; diff --git a/SP/code/game/ai_cast_events.c b/SP/code/game/ai_cast_events.c index a8fd0f3..7248363 100644 --- a/SP/code/game/ai_cast_events.c +++ b/SP/code/game/ai_cast_events.c @@ -176,7 +176,7 @@ void AICast_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int } // record the sighting (FIXME: silent weapons shouldn't do this, but the AI should react in some way) - if ( attacker->client ) { + if ( attacker && attacker->client ) { AICast_UpdateVisibility( self, attacker, qtrue, qtrue ); } @@ -312,7 +312,7 @@ void AICast_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int // set enemy weapon BG_UpdateConditionValue( self->s.number, ANIM_COND_ENEMY_WEAPON, 0, qfalse ); - if ( attacker->client ) { + if ( attacker && attacker->client ) { BG_UpdateConditionValue( self->s.number, ANIM_COND_ENEMY_WEAPON, inflictor->s.weapon, qtrue ); } else { BG_UpdateConditionValue( self->s.number, ANIM_COND_ENEMY_WEAPON, 0, qfalse ); @@ -388,7 +388,8 @@ void AICast_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if ( !cs->rebirthTime ) { G_UseTargets( self, self ); // really dead now, so call the script - AICast_ScriptEvent( cs, "death", attacker->aiName ? attacker->aiName : "" ); + if ( attacker ) + AICast_ScriptEvent( cs, "death", attacker->aiName ? attacker->aiName : "" ); // call the deathfunc for this cast, so we can play associated sounds, or do any character-specific things if ( !( cs->aiFlags & AIFL_DENYACTION ) && cs->deathfunc ) { cs->deathfunc( self, attacker, damage, meansOfDeath ); //----(SA) added mod diff --git a/SP/code/game/ai_cast_fight.c b/SP/code/game/ai_cast_fight.c index 41e06e7..cb2bcc3 100644 --- a/SP/code/game/ai_cast_fight.c +++ b/SP/code/game/ai_cast_fight.c @@ -1370,7 +1370,7 @@ bot_moveresult_t AICast_CombatMove( cast_state_t *cs, int tfl ) { //direction towards the enemy VectorSubtract( cs->vislist[cs->enemyNum].visible_pos, bs->origin, forward ); //the distance towards the enemy - dist = VectorNormalize( forward ); + VectorNormalize( forward ); //VectorNegate( forward, backward ); // // do we have somewhere we are trying to get to? diff --git a/SP/code/game/ai_cast_func_boss1.c b/SP/code/game/ai_cast_func_boss1.c index 52297ba..e435986 100644 --- a/SP/code/game/ai_cast_func_boss1.c +++ b/SP/code/game/ai_cast_func_boss1.c @@ -698,7 +698,7 @@ char *AIFunc_Heinrich_Earthquake( cast_state_t *cs ) { ecs = AICast_GetCastState( cs->enemyNum ); VectorMA( enemy->r.currentOrigin, HEINRICH_STOMP_DELAY, enemy->client->ps.velocity, enemyVec ); - enemyDist = VectorDistance( ent->r.currentOrigin, enemyVec ); + VectorDistance( ent->r.currentOrigin, enemyVec ); if ( ent->client->ps.torsoTimer < 500 ) { int rnd; diff --git a/SP/code/game/ai_cast_funcs.c b/SP/code/game/ai_cast_funcs.c index 610cc21..57c8ed9 100644 --- a/SP/code/game/ai_cast_funcs.c +++ b/SP/code/game/ai_cast_funcs.c @@ -2266,8 +2266,6 @@ char *AIFunc_BattleHunt( cast_state_t *cs ) { // try to go to ambush mode cs->enemyNum = -1; return AIFunc_DefaultStart( cs ); - } else { - moved = qtrue; } // slow down real close to the goal, so we don't go passed it cs->speedScale = AICast_SpeedScaleForDistance( cs, dist, chaseDist ); @@ -2459,7 +2457,6 @@ char *AIFunc_BattleAmbush( cast_state_t *cs ) { && ( ( enemyDist - 1 ) > ( Distance( move.endpos, g_entities[cs->enemyNum].s.pos.trBase ) ) ) ) ) { // abort the manouver VectorClear( cs->takeCoverPos ); - dist = 0; } // // we should slow down on approaching the destination point @@ -2962,8 +2959,6 @@ char *AIFunc_BattleChase( cast_state_t *cs ) { VectorCopy( cs->bs->origin, cs->takeCoverPos ); return AIFunc_BattleAmbushStart( cs ); } - } else { - moved = qtrue; } } // @@ -3482,7 +3477,6 @@ char *AIFunc_BattleTakeCover( cast_state_t *cs ) { && ( ( enemyDist - 1 ) > ( Distance( move.endpos, g_entities[cs->enemyNum].s.pos.trBase ) ) ) ) ) { // abort the manouver VectorClear( cs->takeCoverPos ); - dist = 0; } // // do we want to play a rolling animation into a cover position? @@ -3502,7 +3496,6 @@ char *AIFunc_BattleTakeCover( cast_state_t *cs ) { && !AICast_VisibleFromPos( cs->vislist[cs->enemyNum].real_visible_pos, cs->enemyNum, cs->bs->origin, cs->entityNum, qfalse ) && trap_AAS_PointAreaNum( move.endpos ) ) { // make sure the endpos is in a valid area VectorCopy( move.endpos, cs->takeCoverPos ); - dist = 0; cs->aiFlags |= AIFL_MISCFLAG1; // dont do this again } // @@ -3902,8 +3895,6 @@ char *AIFunc_GrenadeFlush( cast_state_t *cs ) { cs->enemyNum = -1; //G_Printf("aborting, movement failure\n"); return AIFunc_DefaultStart( cs ); - } else { - moved = qtrue; } } } @@ -4122,7 +4113,7 @@ char *AIFunc_BattleMG42( cast_state_t *cs ) { // // TODO: play a special "holding mg42" torso animation // - VectorCopy( angles, cs->ideal_viewangles ); + //VectorCopy( angles, cs->ideal_viewangles ); if ( cs->triggerReleaseTime < level.time ) { trap_EA_Attack( bs->client ); cs->bFlags |= BFL_ATTACKED; @@ -4312,7 +4303,7 @@ char *AIFunc_GrenadeKick( cast_state_t *cs ) { bot_state_t *bs; vec3_t destorg, vec; float dist, speed; - int enemies[MAX_CLIENTS], numEnemies, i; + int enemies[MAX_CLIENTS], numEnemies = 0, i; qboolean shouldAttack; gentity_t *danger; gentity_t *ent; @@ -4521,7 +4512,6 @@ char *AIFunc_GrenadeKick( cast_state_t *cs ) { // look for things we should attack // if we are out of ammo, we shouldn't bother trying to attack shouldAttack = qfalse; - numEnemies = 0; if ( AICast_GotEnoughAmmoForWeapon( cs, cs->weaponNum ) ) { numEnemies = AICast_ScanForEnemies( cs, enemies ); if ( numEnemies == -1 ) { // query mode @@ -4624,7 +4614,7 @@ AIFunc_Battle() */ char *AIFunc_Battle( cast_state_t *cs ) { bot_moveresult_t moveresult; - int tfl; + //int tfl; bot_state_t *bs; gentity_t *ent, *enemy; @@ -4777,14 +4767,14 @@ char *AIFunc_Battle( cast_state_t *cs ) { // // setup for the fight // - tfl = cs->travelflags; + //tfl = cs->travelflags; //if in lava or slime the bot should be able to get out - if ( BotInLava( bs ) ) { - tfl |= TFL_LAVA; - } - if ( BotInSlime( bs ) ) { - tfl |= TFL_SLIME; - } + //if ( BotInLava( bs ) ) { + // tfl |= TFL_LAVA; + //} + //if ( BotInSlime( bs ) ) { + // tfl |= TFL_SLIME; + //} // /* moveresult = AICast_CombatMove(cs, tfl); diff --git a/SP/code/game/ai_cast_script.c b/SP/code/game/ai_cast_script.c index 0e0f5ac..9548e45 100644 --- a/SP/code/game/ai_cast_script.c +++ b/SP/code/game/ai_cast_script.c @@ -418,7 +418,6 @@ void AICast_ScriptParse( cast_state_t *cs ) { return; } - buildScript = trap_Cvar_VariableIntegerValue( "com_buildScript" ); buildScript = qtrue; pScript = level.scriptAI; diff --git a/SP/code/game/ai_cast_script_actions.c b/SP/code/game/ai_cast_script_actions.c index 43c7a28..29888ba 100644 --- a/SP/code/game/ai_cast_script_actions.c +++ b/SP/code/game/ai_cast_script_actions.c @@ -566,7 +566,7 @@ qboolean AICast_ScriptAction_Wait( cast_state_t *cs, char *params ) { } } else // if we are reloading, look for somewhere to hide - if ( cs->castScriptStatus.scriptWaitHideTime > level.time || cs->bs->cur_ps.weaponTime > 500 ) { + if ( cs->castScriptStatus.scriptWaitHideTime > level.time || ( cs->bs && cs->bs->cur_ps.weaponTime > 500 ) ) { if ( cs->castScriptStatus.scriptWaitHideTime < level.time ) { // look for a hide pos within the wait range diff --git a/SP/code/game/ai_cast_sight.c b/SP/code/game/ai_cast_sight.c index d33ea9c..de45edc 100644 --- a/SP/code/game/ai_cast_sight.c +++ b/SP/code/game/ai_cast_sight.c @@ -557,15 +557,13 @@ static int lastsrc = 0, lastdest = 0; void AICast_SightUpdate( int numchecks ) { int count = 0, destcount, srccount; - int src, dest; + int src = 0, dest = 0; gentity_t *srcent, *destent; cast_state_t *cs, *dcs; //static int lastNumUpdated; // TTimo: unused cast_visibility_t *vis; #define SIGHT_MIN_DELAY 200 - src = 0; - dest = 0; if ( numchecks < 5 ) { numchecks = 5; } diff --git a/SP/code/game/ai_cast_think.c b/SP/code/game/ai_cast_think.c index 9997a87..8b0fc71 100644 --- a/SP/code/game/ai_cast_think.c +++ b/SP/code/game/ai_cast_think.c @@ -1000,13 +1000,13 @@ void AICast_StartServerFrame( int time ) { AICast_AgePlayTime( 0 ); if ( elapsed < 0 ) { - elapsed = 0; + // elapsed = 0; lasttime = time; } // don't let the framerate drop below 10 - if ( elapsed > 100 ) { - elapsed = 100; - } + //if ( elapsed > 100 ) { + // elapsed = 100; + //} // // process player's current script if it exists AICast_ScriptRun( AICast_GetCastState( 0 ), qfalse ); @@ -1205,7 +1205,7 @@ done: // hack, if we are above ground, chances are it's because we only did one frame, and gravity isn't applied until // after the frame, so try and drop us down some - if ( move->groundEntityNum == ENTITYNUM_NONE ) { + if ( pm.ps->groundEntityNum == ENTITYNUM_NONE ) { VectorCopy( move->endpos, end ); end[2] -= 32; trap_Trace( &tr, move->endpos, pm.mins, pm.maxs, end, pm.ps->clientNum, pm.tracemask ); diff --git a/SP/code/game/ai_dmq3.c b/SP/code/game/ai_dmq3.c index 073cd7b..6c8de38 100644 --- a/SP/code/game/ai_dmq3.c +++ b/SP/code/game/ai_dmq3.c @@ -1047,7 +1047,7 @@ BotRoamGoal void BotRoamGoal( bot_state_t *bs, vec3_t goal ) { float len, r1, r2, sign, n; int pc; - vec3_t dir, bestorg, belowbestorg; + vec3_t dir, bestorg = {0}, belowbestorg; bsp_trace_t trace; for ( n = 0; n < 10; n++ ) { diff --git a/SP/code/game/ai_main.c b/SP/code/game/ai_main.c index f2f931e..220e199 100644 --- a/SP/code/game/ai_main.c +++ b/SP/code/game/ai_main.c @@ -631,6 +631,10 @@ int BotAISetupClient( int client, struct bot_settings_s *settings ) { } bs = botstates[client]; + if ( !bs ) { + return qfalse; + } + if ( bs && bs->inuse ) { BotAI_Print( PRT_FATAL, "client %d already setup\n", client ); return qfalse; diff --git a/SP/code/game/ai_team.c b/SP/code/game/ai_team.c index 5abb62e..86ae5f6 100644 --- a/SP/code/game/ai_team.c +++ b/SP/code/game/ai_team.c @@ -152,7 +152,7 @@ int BotSortTeamMatesByBaseTravelTime( bot_state_t *bs, int *teammates, int maxte continue; } // - if ( BotSameTeam( bs, i ) ) { + if ( BotSameTeam( bs, i ) && goal ) { // traveltime = BotClientTravelTimeToGoal( i, goal ); // @@ -209,7 +209,7 @@ BotCTFOrders */ void BotCTFOrders_BothFlagsNotAtBase( bot_state_t *bs ) { int numteammates, defenders, attackers, i, other; - int teammates[MAX_CLIENTS]; + int teammates[MAX_CLIENTS] = {0}; char name[MAX_NETNAME], carriername[MAX_NETNAME]; numteammates = BotSortTeamMatesByBaseTravelTime( bs, teammates, sizeof( teammates ) ); @@ -441,7 +441,7 @@ BotCTFOrders */ void BotCTFOrders_BothFlagsAtBase( bot_state_t *bs ) { int numteammates, defenders, attackers, i; - int teammates[MAX_CLIENTS]; + int teammates[MAX_CLIENTS] = {0}; char name[MAX_NETNAME]; // char buf[MAX_MESSAGE_SIZE]; diff --git a/SP/code/game/bg_animation.c b/SP/code/game/bg_animation.c index fc37898..c351755 100644 --- a/SP/code/game/bg_animation.c +++ b/SP/code/game/bg_animation.c @@ -633,6 +633,7 @@ qboolean BG_AnimParseAnimConfig( animModelInfo_t *animModelInfo, const char *fil token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "end of file without ENDANIMS" ); + break; } } else { // just set it to the equivalent animStrings[] @@ -658,18 +659,21 @@ qboolean BG_AnimParseAnimConfig( animModelInfo_t *animModelInfo, const char *fil token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "end of file without ENDANIMS" ); + break; } animations[i].numFrames = atoi( token ); token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "end of file without ENDANIMS: line %i", COM_GetCurrentParseLine() + 1 ); + break; } animations[i].loopFrames = atoi( token ); token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "end of file without ENDANIMS: line %i", COM_GetCurrentParseLine() + 1 ); + break; } fps = atof( token ); if ( fps == 0 ) { @@ -682,6 +686,7 @@ qboolean BG_AnimParseAnimConfig( animModelInfo_t *animModelInfo, const char *fil token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "end of file without ENDANIMS" ); + break; } animations[i].moveSpeed = atoi( token ); @@ -771,7 +776,7 @@ qboolean BG_AnimParseAnimConfig( animModelInfo_t *animModelInfo, const char *fil headAnims[i].numFrames = atoi( token ); // skip the movespeed - token = COM_ParseExt( &text_p, qfalse ); + COM_ParseExt( &text_p, qfalse ); } animModelInfo->numHeadAnims = i; @@ -937,6 +942,7 @@ qboolean BG_ParseConditions( char **text_pp, animScriptItem_t *scriptItem ) { token = COM_ParseExt( text_pp, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "BG_AnimParseAnimScript: expected condition value, found end of line" ); // RF modification + break; } // check for a comma (condition divider) if ( token[strlen( token ) - 1] == ',' ) { @@ -1025,6 +1031,7 @@ void BG_ParseCommands( char **input, animScriptItem_t *scriptItem, animModelInfo token = COM_ParseExt( input, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "BG_ParseCommands: expected duration value" ); + break; } command->animDuration[partIndex] = atoi( token ); } else { // unget the token @@ -1054,6 +1061,7 @@ void BG_ParseCommands( char **input, animScriptItem_t *scriptItem, animModelInfo token = COM_ParseExt( input, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "BG_ParseCommands: expected sound" ); + break; } // NOTE: only sound script are supported at this stage if ( strstr( token, ".wav" ) ) { @@ -1066,6 +1074,7 @@ void BG_ParseCommands( char **input, animScriptItem_t *scriptItem, animModelInfo token = COM_ParseExt( input, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "BG_ParseCommands: expected showpart number" ); + break; } if ( atoi( token ) > 7 ) { BG_AnimParseError( "BG_ParseCommands: showpart number '%d' is too big! (max 8)", atoi( token ) ) ; @@ -1076,6 +1085,7 @@ void BG_ParseCommands( char **input, animScriptItem_t *scriptItem, animModelInfo token = COM_ParseExt( input, qfalse ); if ( !token || !token[0] ) { BG_AnimParseError( "BG_ParseCommands: expected hidepart number" ); + break; } if ( atoi( token ) > 7 ) { BG_AnimParseError( "BG_ParseCommands: hidepart number '%d' is too big! (max 8)", atoi( token ) ) ; diff --git a/SP/code/game/bg_misc.c b/SP/code/game/bg_misc.c index 71b96f6..d63bb90 100644 --- a/SP/code/game/bg_misc.c +++ b/SP/code/game/bg_misc.c @@ -4129,7 +4129,6 @@ void BG_EvaluateTrajectoryDelta( const trajectory_t *tr, int atTime, vec3_t resu return; } deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds - phase = deltaTime / (float)tr->trDuration; VectorScale( tr->trDelta, deltaTime * deltaTime, result ); break; case TR_DECCELERATE: // trDelta is breaking force diff --git a/SP/code/game/bg_pmove.c b/SP/code/game/bg_pmove.c index 7b769d2..1483722 100644 --- a/SP/code/game/bg_pmove.c +++ b/SP/code/game/bg_pmove.c @@ -1686,7 +1686,7 @@ static void PM_Footsteps( void ) { // mg42, always idle if ( pm->ps->persistant[PERS_HWEAPON_USE] ) { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLE, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLE, qtrue ); // return; } @@ -1695,9 +1695,9 @@ static void PM_Footsteps( void ) { if ( pm->waterlevel > 1 ) { if ( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_SWIMBK, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_SWIMBK, qtrue ); } else { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_SWIM, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_SWIM, qtrue ); } return; @@ -1707,10 +1707,10 @@ static void PM_Footsteps( void ) { if ( pm->ps->groundEntityNum == ENTITYNUM_NONE ) { if ( pm->ps->pm_flags & PMF_LADDER ) { // on ladder if ( pm->ps->velocity[2] >= 0 ) { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_CLIMBUP, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_CLIMBUP, qtrue ); //BG_PlayAnimName( pm->ps, "BOTH_CLIMB", ANIM_BP_BOTH, qfalse, qtrue, qfalse ); } else if ( pm->ps->velocity[2] < 0 ) { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_CLIMBDOWN, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_CLIMBDOWN, qtrue ); //BG_PlayAnimName( pm->ps, "BOTH_CLIMB_DOWN", ANIM_BP_BOTH, qfalse, qtrue, qfalse ); } } @@ -1731,7 +1731,7 @@ static void PM_Footsteps( void ) { animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLECR, qtrue ); } if ( animResult < 0 ) { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLE, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLE, qtrue ); } // return; @@ -1829,7 +1829,7 @@ static void PM_Footsteps( void ) { // if no anim found yet, then just use the idle as default if ( animResult < 0 ) { - animResult = BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLE, qtrue ); + BG_AnimScriptAnimation( pm->ps, pm->ps->aiState, ANIM_MT_IDLE, qtrue ); } // check for footstep / splash sounds @@ -3464,14 +3464,8 @@ addTime = 50; break; // jpw case WP_MONSTER_ATTACK1: -switch ( pm->ps->aiChar ) { -case AICHAR_ZOMBIE: - // Zombie spitting blood - addTime = 1000; - break; -default: - break; -} +addTime = 1000; +break; default: case WP_GAUNTLET: diff --git a/SP/code/game/g_active.c b/SP/code/game/g_active.c index d5d267c..23e9fb0 100644 --- a/SP/code/game/g_active.c +++ b/SP/code/game/g_active.c @@ -563,8 +563,8 @@ void ClientEvents( gentity_t *ent, int oldEventSequence ) { int event, eventParm; gclient_t *client; int damage; - int stunTime; //----(SA) added - float fallSoundMul; + int stunTime; //----(SA) added + float fallSoundMul = 1.0f; // default to normal range // vec3_t origin, angles; // qboolean fired; // gitem_t *item; @@ -596,7 +596,6 @@ void ClientEvents( gentity_t *ent, int oldEventSequence ) { } stunTime = 0; //----(SA) added - fallSoundMul = 1.0f; // default to normal range //----(SA) FIXME: TODO: hmm, going through here adding surfaceparms it seems that the value for ent->client->ps.pm_time was weird. (1000 for all but dmg_25 which has 250?) if ( event == EV_FALL_NDIE ) { @@ -623,7 +622,7 @@ void ClientEvents( gentity_t *ent, int oldEventSequence ) { stunTime = 0; } - if ( stunTime ) { + if ( ent->client && stunTime ) { ent->client->ps.pm_time = stunTime; ent->client->ps.pm_flags |= PMF_TIME_KNOCKBACK; VectorClear( ent->client->ps.velocity ); @@ -698,11 +697,11 @@ void ClientEvents( gentity_t *ent, int oldEventSequence ) { default: if ( g_gametype.integer == GT_SINGLE_PLAYER ) { // RF, handle footstep sounds - if ( ent->client->ps.pm_flags & PMF_DUCKED ) { // no when crouching + if ( ent->client && ( ent->client->ps.pm_flags & PMF_DUCKED ) ) { // no when crouching break; } - if ( ent->client->pers.cmd.buttons & BUTTON_WALKING ) { + if ( ent->client && ( ent->client->pers.cmd.buttons & BUTTON_WALKING ) ) { break; } diff --git a/SP/code/game/g_alarm.c b/SP/code/game/g_alarm.c index 2a9df3d..20077d9 100644 --- a/SP/code/game/g_alarm.c +++ b/SP/code/game/g_alarm.c @@ -81,7 +81,13 @@ alarmbox_updateparts */ void alarmbox_updateparts( gentity_t *ent, qboolean matestoo ) { gentity_t *t, *mate; - qboolean alarming = ( ent->s.frame == 1 ); + qboolean alarming; + + if ( !ent ) { + return; + } + + alarming = ( ent->s.frame == 1 ); // update teammates if ( matestoo ) { diff --git a/SP/code/game/g_items.c b/SP/code/game/g_items.c index 6fd39e0..2413aa9 100644 --- a/SP/code/game/g_items.c +++ b/SP/code/game/g_items.c @@ -571,7 +571,7 @@ RespawnItem =============== */ void RespawnItem( gentity_t *ent ) { - if (!ent) { + if ( !ent ) { return; } @@ -591,10 +591,14 @@ void RespawnItem( gentity_t *ent ) { choice = rand() % count; - for ( count = 0, ent = master; count < choice; ent = ent->teamchain, count++ ) + for ( count = 0, ent = master; ent && count < choice; ent = ent->teamchain, count++ ) ; } + if ( !ent ) { + return; + } + ent->r.contents = CONTENTS_TRIGGER; //ent->s.eFlags &= ~EF_NODRAW; ent->flags &= ~FL_NODRAW; diff --git a/SP/code/game/g_misc.c b/SP/code/game/g_misc.c index 676329e..986df88 100644 --- a/SP/code/game/g_misc.c +++ b/SP/code/game/g_misc.c @@ -1629,7 +1629,7 @@ Fire_Lead //----(SA) added 'activator' so the bits that used to expect 'ent' to be the gun still work void Fire_Lead( gentity_t *ent, gentity_t *activator, float spread, int damage, vec3_t muzzle, vec3_t angles ) { trace_t tr; - vec3_t end, lead_muzzle, mg42_muzzle; + vec3_t end, lead_muzzle, mg42_muzzle = {0}; float r; float u; gentity_t *tent; @@ -1953,6 +1953,8 @@ void mg42_track( gentity_t *self, gentity_t *other ) { if ( other->active ) { if ( ( !( level.time % 100 ) ) && ( other->client ) && ( other->client->buttons & BUTTON_ATTACK ) ) { + other->client->ps.viewlocked = 1; + if ( self->s.frame && !is_flak ) { // G_Printf ("gun: destroyed = %d\n", self->s.frame); G_AddEvent( self, EV_GENERAL_SOUND, snd_noammo ); @@ -2026,8 +2028,6 @@ void mg42_track( gentity_t *self, gentity_t *other ) { other->client->ps.viewlocked = 2; // this enable screen jitter when firing } } - } else { - other->client->ps.viewlocked = 1; } // move to the position over the next frame diff --git a/SP/code/game/g_mover.c b/SP/code/game/g_mover.c index 26786bd..a3a3055 100644 --- a/SP/code/game/g_mover.c +++ b/SP/code/game/g_mover.c @@ -1103,7 +1103,7 @@ qboolean IsBinaryMoverBlocked( gentity_t *ent, gentity_t *other, gentity_t *acti if ( !activator ) { if ( Q_stricmp( other->classname, "target_relay" ) == 0 ) { is_relay = qtrue; - } else if ( !activator->client ) { + } else { return qfalse; } } diff --git a/SP/code/game/g_props.c b/SP/code/game/g_props.c index d8cd734..5a5bad1 100644 --- a/SP/code/game/g_props.c +++ b/SP/code/game/g_props.c @@ -881,11 +881,9 @@ void Props_Chair_Touch( gentity_t *self, gentity_t *other, trace_t *trace ); void Props_Chair_Die( gentity_t *ent, gentity_t *inflictor, gentity_t *attacker, int damage, int mod ); void Just_Got_Thrown( gentity_t *self ) { - float len; + float len = 0; vec3_t vec; - len = 0; - if ( self->s.groundEntityNum == -1 ) { self->nextthink = level.time + FRAMETIME; @@ -1713,7 +1711,7 @@ void Use_DamageInflictor( gentity_t *ent, gentity_t *other, gentity_t *activator gentity_t *daent; daent = NULL; - while ( ( daent = G_Find( daent, FOFS( targetname ), daent->target ) ) != NULL ) + while ( daent && ( ( daent = G_Find( daent, FOFS( targetname ), daent->target ) ) != NULL ) ) { if ( daent == ent ) { G_Printf( "Use_DamageInflictor damaging self.\n" ); diff --git a/SP/code/game/g_save.c b/SP/code/game/g_save.c index b92eeda..df10677 100644 --- a/SP/code/game/g_save.c +++ b/SP/code/game/g_save.c @@ -774,7 +774,7 @@ ReadEntity void ReadEntity( fileHandle_t f, gentity_t *ent, int size ) { saveField_t *field; ignoreField_t *ifield; - gentity_t temp, backup, backup2; + gentity_t temp = {{0}}, backup, backup2; vmCvar_t cvar; int decodedSize; diff --git a/SP/code/game/g_script.c b/SP/code/game/g_script.c index e85a4b0..982531b 100644 --- a/SP/code/game/g_script.c +++ b/SP/code/game/g_script.c @@ -308,7 +308,6 @@ void G_Script_ScriptParse( gentity_t *ent ) { return; } - buildScript = trap_Cvar_VariableIntegerValue( "com_buildScript" ); buildScript = qtrue; pScript = level.scriptEntity; diff --git a/SP/code/game/g_target.c b/SP/code/game/g_target.c index 579976d..0c05a9c 100644 --- a/SP/code/game/g_target.c +++ b/SP/code/game/g_target.c @@ -488,7 +488,7 @@ void target_relay_use( gentity_t *self, gentity_t *other, gentity_t *activator ) } } - if ( self->spawnflags & 16 ) { // (SA) take key + if ( item && ( self->spawnflags & 16 ) ) { // (SA) take key activator->client->ps.stats[STAT_KEYS] &= ~( 1 << item->giTag ); // (SA) TODO: "took inventory item" sound } diff --git a/SP/code/game/g_team.c b/SP/code/game/g_team.c index 101c969..0240c5b 100644 --- a/SP/code/game/g_team.c +++ b/SP/code/game/g_team.c @@ -636,7 +636,7 @@ gentity_t *SelectRandomTeamSpawnPoint( int teamstate, team_t team ) { gentity_t *spots[MAX_TEAM_SPAWN_POINTS]; char *classname; qboolean initialSpawn = qfalse; // DHM - Nerve - int i = 0,j; // JPW NERVE + int i = 0,j = 0; // JPW NERVE int closest; // JPW NERVE float shortest,tmp; // JPW NERVE vec3_t target; // JPW NERVE @@ -695,7 +695,6 @@ gentity_t *SelectRandomTeamSpawnPoint( int teamstate, team_t team ) { } else { // FIXME: temporarily select target as farthest point from first team spawnpoint // we'll want to replace this with the target coords pulled from the UI target selection - j = 0; for ( j = 0; j < count; j++ ) { if ( spots[j]->spawnflags & 1 ) { // only use spawnpoint if it's a permanent one i = FindFarthestObjectiveIndex( spots[j]->s.origin ); diff --git a/SP/code/game/g_tramcar.c b/SP/code/game/g_tramcar.c index 77aadfc..b4aa070 100644 --- a/SP/code/game/g_tramcar.c +++ b/SP/code/game/g_tramcar.c @@ -544,6 +544,10 @@ extern void func_explosive_explode( gentity_t *self, gentity_t *inflictor, genti void Tramcar_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod ) { gentity_t *slave; + if ( !self ) { + return; + } + func_explosive_explode( self, self, inflictor, 0, 0 ); // link all teammembers diff --git a/SP/code/qcommon/files.c b/SP/code/qcommon/files.c index 7383ab1..4910e5d 100644 --- a/SP/code/qcommon/files.c +++ b/SP/code/qcommon/files.c @@ -590,11 +590,13 @@ static void FS_CopyFile( char *fromOSPath, char *toOSPath ) { fclose( f ); if ( FS_CreatePath( toOSPath ) ) { + free( buf ); return; } f = Sys_FOpen( toOSPath, "wb" ); if ( !f ) { + free( buf ); return; } if ( fwrite( buf, 1, len, f ) != len ) { @@ -637,11 +639,13 @@ void FS_CopyFileOS( char *from, char *to ) { fclose( f ); if ( FS_CreatePath( toOSPath ) ) { + free( buf ); return; } f = Sys_FOpen( toOSPath, "wb" ); if ( !f ) { + free( buf ); return; } if ( fwrite( buf, 1, len, f ) != len ) { diff --git a/SP/code/qcommon/msg.c b/SP/code/qcommon/msg.c index 7bf7f08..088e406 100644 --- a/SP/code/qcommon/msg.c +++ b/SP/code/qcommon/msg.c @@ -1027,7 +1027,7 @@ identical, under the assumption that the in-order delta code will catch it. */ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entityState_s *to, qboolean force ) { - int i, c; + int i; int numFields; netField_t *field; int trunc; @@ -1052,8 +1052,6 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity // struct without updating the message fields assert( numFields + 1 == sizeof( *from ) / 4 ); - c = msg->cursize; - // a NULL to is a delta remove message if ( to == NULL ) { if ( from == NULL ) { @@ -1188,7 +1186,6 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity } } } - c = msg->cursize - c; if ( print ) { if ( msg->bit == 0 ) { diff --git a/SP/code/rend2/tr_backend.c b/SP/code/rend2/tr_backend.c index 3fcb7d9..8bb9f5d 100644 --- a/SP/code/rend2/tr_backend.c +++ b/SP/code/rend2/tr_backend.c @@ -969,6 +969,15 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { oldNumIndex = tess.numIndexes; rb_surfaceTable[ *drawSurf->surface ]( drawSurf->surface ); + + // RF, convert the newly created vertexes into dust particles, and overwrite + if (backEnd.currentEntity->e.reFlags & REFLAG_ZOMBIEFX) { + RB_ZombieFX( 0, drawSurf, oldNumVerts, oldNumIndex ); + } + else if (backEnd.currentEntity->e.reFlags & REFLAG_ZOMBIEFX2) { + RB_ZombieFX( 1, drawSurf, oldNumVerts, oldNumIndex ); + } + continue; } oldSort = drawSurf->sort; diff --git a/SP/code/rend2/tr_bsp.c b/SP/code/rend2/tr_bsp.c index fa274e5..1b9365d 100644 --- a/SP/code/rend2/tr_bsp.c +++ b/SP/code/rend2/tr_bsp.c @@ -602,8 +602,6 @@ static void R_LoadVisibility( lump_t *l ) { int len; byte *buf; - len = ( s_worldData.numClusters + 63 ) & ~63; - len = l->filelen; if ( !len ) { return; @@ -1638,7 +1636,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { for ( m = 0; m < 2; m++ ) { - if ( grid2->width >= MAX_GRID_SIZE ) { + if ( !grid2 || grid2->width >= MAX_GRID_SIZE ) { break; } if ( m ) { @@ -1694,7 +1692,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { } for ( m = 0; m < 2; m++ ) { - if ( grid2->height >= MAX_GRID_SIZE ) { + if ( !grid2 || grid2->height >= MAX_GRID_SIZE ) { break; } if ( m ) { @@ -1764,7 +1762,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { for ( k = grid1->height - 1; k > 1; k -= 2 ) { for ( m = 0; m < 2; m++ ) { - if ( grid2->width >= MAX_GRID_SIZE ) { + if ( !grid2 || grid2->width >= MAX_GRID_SIZE ) { break; } if ( m ) { @@ -1820,7 +1818,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { } for ( m = 0; m < 2; m++ ) { - if ( grid2->height >= MAX_GRID_SIZE ) { + if ( !grid2 || grid2->height >= MAX_GRID_SIZE ) { break; } if ( m ) { diff --git a/SP/code/rend2/tr_flares.c b/SP/code/rend2/tr_flares.c index 27c03e4..f88fdc7 100644 --- a/SP/code/rend2/tr_flares.c +++ b/SP/code/rend2/tr_flares.c @@ -306,7 +306,7 @@ void RB_AddCoronaFlares( void ) { } cor = backEnd.refdef.coronas; - fog = tr.world->fogs; + for ( i = 0 ; i < backEnd.refdef.num_coronas ; i++, cor++ ) { // find which fog volume the corona is in diff --git a/SP/code/rend2/tr_image.c b/SP/code/rend2/tr_image.c index 92320be..592ee40 100644 --- a/SP/code/rend2/tr_image.c +++ b/SP/code/rend2/tr_image.c @@ -44,49 +44,6 @@ int gl_filter_max = GL_LINEAR; #define FILE_HASH_SIZE 4096 static image_t* hashTable[FILE_HASH_SIZE]; -// Ridah, in order to prevent zone fragmentation, all images will -// be read into this buffer. In order to keep things as fast as possible, -// we'll give it a starting value, which will account for the majority of -// images, but allow it to grow if the buffer isn't big enough -#define R_IMAGE_BUFFER_SIZE ( 512 * 512 * 4 ) // 512 x 512 x 32bit - -typedef enum { - BUFFER_IMAGE, - BUFFER_SCALED, - BUFFER_RESAMPLED, - BUFFER_MAX_TYPES -} bufferMemType_t; - -int imageBufferSize[BUFFER_MAX_TYPES] = {0,0,0}; -void *imageBufferPtr[BUFFER_MAX_TYPES] = {NULL,NULL,NULL}; - -void *R_GetImageBuffer( int size, bufferMemType_t bufferType ) { - if ( imageBufferSize[bufferType] < R_IMAGE_BUFFER_SIZE && size <= imageBufferSize[bufferType] ) { - imageBufferSize[bufferType] = R_IMAGE_BUFFER_SIZE; - imageBufferPtr[bufferType] = malloc( imageBufferSize[bufferType] ); - } - if ( size > imageBufferSize[bufferType] ) { // it needs to grow - if ( imageBufferPtr[bufferType] ) { - free( imageBufferPtr[bufferType] ); - } - imageBufferSize[bufferType] = size; - imageBufferPtr[bufferType] = malloc( imageBufferSize[bufferType] ); - } - - return imageBufferPtr[bufferType]; -} - -void R_FreeImageBuffer( void ) { - int bufferType; - for ( bufferType = 0; bufferType < BUFFER_MAX_TYPES; bufferType++ ) { - if ( !imageBufferPtr[bufferType] ) { - return; - } - free( imageBufferPtr[bufferType] ); - imageBufferSize[bufferType] = 0; - imageBufferPtr[bufferType] = NULL; - } -} /* ** R_GammaCorrect @@ -2072,7 +2029,7 @@ static void Upload32( byte *data, int width, int height, imgType_t type, imgFlag if ( r_rmse->value ) { while ( R_RMSE( (byte *)data, width, height ) < r_rmse->value ) { rmse_saved += ( height * width * 4 ) - ( ( width >> 1 ) * ( height >> 1 ) * 4 ); - resampledBuffer = R_GetImageBuffer( ( width >> 1 ) * ( height >> 1 ) * 4, BUFFER_RESAMPLED ); + resampledBuffer = ri.Hunk_AllocateTempMemory( ( width >> 1 ) * ( height >> 1 ) * 4 ); ResampleTexture( data, width, height, resampledBuffer, width >> 1, height >> 1 ); data = resampledBuffer; width = width >> 1; @@ -2280,26 +2237,12 @@ image_t *R_CreateImageExt( const char *name, byte *pic, int width, int height, i qboolean isLightmap = qfalse; int glWrapClampMode; long hash; - qboolean noCompress = qfalse; if ( strlen( name ) >= MAX_QPATH ) { ri.Error( ERR_DROP, "R_CreateImage: \"%s\" is too long", name ); } if ( !strncmp( name, "*lightmap", 9 ) ) { isLightmap = qtrue; - noCompress = qtrue; - } - if ( !noCompress && strstr( name, "skies" ) ) { - noCompress = qtrue; - } - if ( !noCompress && strstr( name, "weapons" ) ) { // don't compress view weapon skins - noCompress = qtrue; - } - // RF, if the shader hasn't specifically asked for it, don't allow compression - if ( r_ext_compressed_textures->integer == 2 && ( tr.allowCompress != qtrue ) ) { - noCompress = qtrue; - } else if ( r_ext_compressed_textures->integer == 1 && ( tr.allowCompress < 0 ) ) { - noCompress = qtrue; } if ( tr.numImages == MAX_DRAWIMAGES ) { @@ -3362,9 +3305,9 @@ qhandle_t RE_GetShaderFromModel( qhandle_t modelid, int surfnum, int withlightma // msurface_t *surf; // shader_t *shd; - if ( surfnum < 0 ) { - surfnum = 0; - } +// if ( surfnum < 0 ) { +// surfnum = 0; +// } // model = R_GetModelByHandle( modelid ); // (SA) should be correct now /* FIXME - Rend2 @@ -4014,7 +3957,7 @@ qboolean R_CropImage( char *name, byte **pic, int border, int *width, int *heigh #endif // RESIZE #endif // FUNNEL_HACK - temppic = malloc( sizeof( unsigned int ) * diff[0] * diff[1] ); + temppic = ri.Z_Malloc( sizeof( unsigned int ) * diff[0] * diff[1] ); outpixel = temppic; for ( row = mins[1]; row < maxs[1]; row++ ) @@ -4127,7 +4070,7 @@ void R_CropAndNumberImagesInDirectory( char *dir, char *ext, int maxWidth, in #else newWidth = maxWidth; newHeight = maxHeight; - temppic = malloc( sizeof( unsigned int ) * newWidth * newHeight ); + temppic = ri.Z_Malloc( sizeof( unsigned int ) * newWidth * newHeight ); ResampleTexture( pic, width, height, temppic, newWidth, newHeight ); memcpy( pic, temppic, sizeof( unsigned int ) * newWidth * newHeight ); ri.Free( temppic ); diff --git a/SP/code/rend2/tr_init.c b/SP/code/rend2/tr_init.c index 1a52d9c..85917e7 100644 --- a/SP/code/rend2/tr_init.c +++ b/SP/code/rend2/tr_init.c @@ -1673,10 +1673,8 @@ void RE_Shutdown( qboolean destroyWindow ) { if ( destroyWindow ) { GLimp_Shutdown(); - // Ridah, release the virtual memory - R_Hunk_End(); - R_FreeImageBuffer(); - //ri.Tag_Free(); // wipe all render alloc'd zone memory + Com_Memset( &glConfig, 0, sizeof( glConfig ) ); + Com_Memset( &glState, 0, sizeof( glState ) ); } tr.registered = qfalse; diff --git a/SP/code/rend2/tr_local.h b/SP/code/rend2/tr_local.h index 2d75320..8727f64 100644 --- a/SP/code/rend2/tr_local.h +++ b/SP/code/rend2/tr_local.h @@ -2353,7 +2353,6 @@ void RB_AddQuadStampExt( vec3_t origin, vec3_t left, vec3_t up, float color[4], void RB_InstantQuad( vec4_t quadVerts[4] ); //void RB_InstantQuad2(vec4_t quadVerts[4], vec2_t texCoords[4], vec4_t color, shaderProgram_t *sp, vec2_t invTexRes); void RB_InstantQuad2(vec4_t quadVerts[4], vec2_t texCoords[4]); -void RB_AddQuadStampFadingCornersExt( vec3_t origin, vec3_t left, vec3_t up, byte *color, float s1, float t1, float s2, float t2 ); void RB_ShowImages( void ); @@ -2870,6 +2869,5 @@ extern int drawskyboxportal; // Ridah, virtual memory void *R_Hunk_Begin( void ); void R_Hunk_End( void ); -void R_FreeImageBuffer( void ); #endif //TR_LOCAL_H (THIS MUST BE LAST!!) diff --git a/SP/code/rend2/tr_model.c b/SP/code/rend2/tr_model.c index 3ed85c1..59cad61 100644 --- a/SP/code/rend2/tr_model.c +++ b/SP/code/rend2/tr_model.c @@ -545,8 +545,6 @@ qboolean R_MDC_EncodeXyzCompressed( const vec3_t vec, const vec3_t normal, mdcXy int i; unsigned char anorm; - i = sizeof( mdcXyzCompressed_t ); - retval.ofsVec = 0; for ( i = 0; i < 3; i++ ) { if ( fabs( vec[i] ) >= MDC_MAX_DIST ) { @@ -2194,7 +2192,7 @@ int R_LerpTag( orientation_t *tag, const refEntity_t *refent, const char *tagNam 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); + R_GetAnimTag((mdrHeader_t *) model->modelData, endFrame, tagName, startIndex, &end); } else if ( model->type == MOD_IQM ) { return R_IQMLerpTag( tag, model->modelData, @@ -2206,7 +2204,7 @@ int R_LerpTag( orientation_t *tag, const refEntity_t *refent, const char *tagNam } else if ( model->type == MOD_MESH ) { // old MD3 style retval = R_GetTag(model->mdv[0], startFrame, tagName, startIndex, &start); - retval = R_GetTag(model->mdv[0], endFrame, tagName, startIndex, &end); + R_GetTag(model->mdv[0], endFrame, tagName, startIndex, &end); } else if ( model->type == MOD_MDS ) { // use bone lerping retval = R_GetBoneTag( tag, model->mds, startIndex, refent, tagNameIn ); diff --git a/SP/code/rend2/tr_model_iqm.c b/SP/code/rend2/tr_model_iqm.c index d442b7a..86656fa 100644 --- a/SP/code/rend2/tr_model_iqm.c +++ b/SP/code/rend2/tr_model_iqm.c @@ -144,7 +144,7 @@ qboolean R_LoadIQM( model_t *mod, void *buffer, int filesize, const char *mod_na unsigned short *framedata; char *str; int i, j; - float jointInvMats[IQM_MAX_JOINTS * 12]; + float jointInvMats[IQM_MAX_JOINTS * 12] = {0.0f}; float *mat, *matInv; size_t size, joint_names; iqmData_t *iqmData; diff --git a/SP/code/rend2/tr_shade_calc.c b/SP/code/rend2/tr_shade_calc.c index fd3febb..11859a2 100644 --- a/SP/code/rend2/tr_shade_calc.c +++ b/SP/code/rend2/tr_shade_calc.c @@ -694,7 +694,7 @@ float RB_CalcWaveAlphaSingle( const waveForm_t *wf ) */ void RB_CalcModulateColorsByFog( unsigned char *colors ) { int i; - float texCoords[SHADER_MAX_VERTEXES][2]; + float texCoords[SHADER_MAX_VERTEXES][2] = {{0.0f}}; // calculate texcoords so we can derive density // this is not wasted, because it would only have diff --git a/SP/code/rend2/tr_shader.c b/SP/code/rend2/tr_shader.c index 79baee9..ac66772 100644 --- a/SP/code/rend2/tr_shader.c +++ b/SP/code/rend2/tr_shader.c @@ -3864,7 +3864,7 @@ a single large text block that can be scanned for shader names #define MAX_SHADER_FILES 4096 static void ScanAndLoadShaderFiles( void ) { char **shaderFiles; - char *buffers[MAX_SHADER_FILES]; + char *buffers[MAX_SHADER_FILES] = {NULL}; char *p; int numShaderFiles; int i; diff --git a/SP/code/rend2/tr_surface.c b/SP/code/rend2/tr_surface.c index b248b8c..988073e 100644 --- a/SP/code/rend2/tr_surface.c +++ b/SP/code/rend2/tr_surface.c @@ -90,107 +90,6 @@ void RB_CheckVBOandIBO(VBO_t *vbo, IBO_t *ibo) /* ============== -RB_AddQuadStampFadingCornersExt - - Creates a sprite with the center at colors[3] alpha, and the corners all 0 alpha -============== -*/ -void RB_AddQuadStampFadingCornersExt( vec3_t origin, vec3_t left, vec3_t up, byte *color, float s1, float t1, float s2, float t2 ) { - vec3_t normal; - int ndx; - byte lColor[4]; - - RB_CHECKOVERFLOW( 5, 12 ); - - ndx = tess.numVertexes; - - // triangle indexes for a simple quad - tess.indexes[ tess.numIndexes + 0 ] = ndx + 0; - tess.indexes[ tess.numIndexes + 1 ] = ndx + 1; - tess.indexes[ tess.numIndexes + 2 ] = ndx + 4; - - tess.indexes[ tess.numIndexes + 3 ] = ndx + 1; - tess.indexes[ tess.numIndexes + 4 ] = ndx + 2; - tess.indexes[ tess.numIndexes + 5 ] = ndx + 4; - - tess.indexes[ tess.numIndexes + 6 ] = ndx + 2; - tess.indexes[ tess.numIndexes + 7 ] = ndx + 3; - tess.indexes[ tess.numIndexes + 8 ] = ndx + 4; - - tess.indexes[ tess.numIndexes + 9 ] = ndx + 3; - tess.indexes[ tess.numIndexes + 10] = ndx + 0; - tess.indexes[ tess.numIndexes + 11] = ndx + 4; - - tess.xyz[ndx][0] = origin[0] + left[0] + up[0]; - tess.xyz[ndx][1] = origin[1] + left[1] + up[1]; - tess.xyz[ndx][2] = origin[2] + left[2] + up[2]; - - tess.xyz[ndx + 1][0] = origin[0] - left[0] + up[0]; - tess.xyz[ndx + 1][1] = origin[1] - left[1] + up[1]; - tess.xyz[ndx + 1][2] = origin[2] - left[2] + up[2]; - - tess.xyz[ndx + 2][0] = origin[0] - left[0] - up[0]; - tess.xyz[ndx + 2][1] = origin[1] - left[1] - up[1]; - tess.xyz[ndx + 2][2] = origin[2] - left[2] - up[2]; - - tess.xyz[ndx + 3][0] = origin[0] + left[0] - up[0]; - tess.xyz[ndx + 3][1] = origin[1] + left[1] - up[1]; - tess.xyz[ndx + 3][2] = origin[2] + left[2] - up[2]; - - tess.xyz[ndx + 4][0] = origin[0]; - tess.xyz[ndx + 4][1] = origin[1]; - tess.xyz[ndx + 4][2] = origin[2]; - - - // constant normal all the way around - VectorSubtract( vec3_origin, backEnd.viewParms.or.axis[0], normal ); - - //tess.normal[ndx][0] = tess.normal[ndx + 1][0] = tess.normal[ndx + 2][0] = tess.normal[ndx + 3][0] = tess.normal[ndx + 4][0] = normal[0]; - //tess.normal[ndx][1] = tess.normal[ndx + 1][1] = tess.normal[ndx + 2][1] = tess.normal[ndx + 3][1] = tess.normal[ndx + 4][1] = normal[1]; - //tess.normal[ndx][2] = tess.normal[ndx + 1][2] = tess.normal[ndx + 2][2] = tess.normal[ndx + 3][2] = tess.normal[ndx + 4][2] = normal[2]; - - tess.normal[ndx] = - tess.normal[ndx+1] = - tess.normal[ndx+2] = - tess.normal[ndx+3] = - tess.normal[ndx+4] = R_VboPackNormal(normal); - - // standard square texture coordinates - tess.texCoords[ndx][0][0] = tess.texCoords[ndx][1][0] = s1; - tess.texCoords[ndx][0][1] = tess.texCoords[ndx][1][1] = t1; - - tess.texCoords[ndx + 1][0][0] = tess.texCoords[ndx + 1][1][0] = s2; - tess.texCoords[ndx + 1][0][1] = tess.texCoords[ndx + 1][1][1] = t1; - - tess.texCoords[ndx + 2][0][0] = tess.texCoords[ndx + 2][1][0] = s2; - tess.texCoords[ndx + 2][0][1] = tess.texCoords[ndx + 2][1][1] = t2; - - tess.texCoords[ndx + 3][0][0] = tess.texCoords[ndx + 3][1][0] = s1; - tess.texCoords[ndx + 3][0][1] = tess.texCoords[ndx + 3][1][1] = t2; - - tess.texCoords[ndx + 4][0][0] = tess.texCoords[ndx + 4][1][0] = ( s1 + s2 ) / 2.0; - tess.texCoords[ndx + 4][0][1] = tess.texCoords[ndx + 4][1][1] = ( t1 + t2 ) / 2.0; - - // center uses full alpha - *( unsigned int * ) &tess.vertexColors[ndx + 4] = - *( unsigned int * )color; - - // fade around edges - memcpy( lColor, color, sizeof( byte ) * 4 ); - lColor[3] = 0; - *( unsigned int * ) &tess.vertexColors[ndx] = - *( unsigned int * ) &tess.vertexColors[ndx + 1] = - *( unsigned int * ) &tess.vertexColors[ndx + 2] = - *( unsigned int * ) &tess.vertexColors[ndx + 3] = - *( unsigned int * )lColor; - - - tess.numVertexes += 5; - tess.numIndexes += 12; -} - -/* -============== RB_AddQuadStampExt ============== */ @@ -359,6 +258,8 @@ static void RB_SurfaceSplash( void ) { VectorSubtract( vec3_origin, left, left ); } + VectorScale4(ent->e.shaderRGBA, 1.0f / 255.0f, colors); + RB_AddQuadStamp( ent->e.origin, left, up, colors ); } diff --git a/SP/code/rend2/tr_world.c b/SP/code/rend2/tr_world.c index ff3bf97..4987d83 100644 --- a/SP/code/rend2/tr_world.c +++ b/SP/code/rend2/tr_world.c @@ -630,6 +630,9 @@ static void R_RecursiveWorldNode( mnode_t *node, int planeBits, int dlightBits, int c; int surf, *view; + // RF, hack, dlight elimination above is unreliable + dlightBits = 0xffffffff; + tr.pc.c_leafs++; // add to z buffer bounds diff --git a/SP/code/renderer/tr_backend.c b/SP/code/renderer/tr_backend.c index 7cc10a1..48bd722 100644 --- a/SP/code/renderer/tr_backend.c +++ b/SP/code/renderer/tr_backend.c @@ -929,7 +929,7 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { oldNumIndex = tess.numIndexes; rb_surfaceTable[ *drawSurf->surface ]( drawSurf->surface ); -/* + // RF, convert the newly created vertexes into dust particles, and overwrite if (backEnd.currentEntity->e.reFlags & REFLAG_ZOMBIEFX) { RB_ZombieFX( 0, drawSurf, oldNumVerts, oldNumIndex ); @@ -937,7 +937,6 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { else if (backEnd.currentEntity->e.reFlags & REFLAG_ZOMBIEFX2) { RB_ZombieFX( 1, drawSurf, oldNumVerts, oldNumIndex ); } -*/ continue; } oldSort = drawSurf->sort; diff --git a/SP/code/renderer/tr_bsp.c b/SP/code/renderer/tr_bsp.c index 5ba2c7a..6a3ef50 100644 --- a/SP/code/renderer/tr_bsp.c +++ b/SP/code/renderer/tr_bsp.c @@ -855,7 +855,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { for ( m = 0; m < 2; m++ ) { - if ( !grid2 || grid2->width >= MAX_GRID_SIZE ) { + if ( grid2->width >= MAX_GRID_SIZE ) { break; } if ( m ) { @@ -911,7 +911,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { } for ( m = 0; m < 2; m++ ) { - if ( !grid2 || grid2->height >= MAX_GRID_SIZE ) { + if ( grid2->height >= MAX_GRID_SIZE ) { break; } if ( m ) { @@ -978,7 +978,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { for ( k = 0; k < grid1->height - 2; k += 2 ) { for ( m = 0; m < 2; m++ ) { - if ( !grid2 || grid2->width >= MAX_GRID_SIZE ) { + if ( grid2->width >= MAX_GRID_SIZE ) { break; } if ( m ) { @@ -1034,7 +1034,7 @@ int R_StitchPatches( int grid1num, int grid2num ) { } for ( m = 0; m < 2; m++ ) { - if ( !grid2 || grid2->height >= MAX_GRID_SIZE ) { + if ( grid2->height >= MAX_GRID_SIZE ) { break; } if ( m ) { diff --git a/SP/code/renderer/tr_flares.c b/SP/code/renderer/tr_flares.c index 5aab7b5..40f31b5 100644 --- a/SP/code/renderer/tr_flares.c +++ b/SP/code/renderer/tr_flares.c @@ -306,7 +306,7 @@ void RB_AddCoronaFlares( void ) { } cor = backEnd.refdef.coronas; - fog = tr.world->fogs; + for ( i = 0 ; i < backEnd.refdef.num_coronas ; i++, cor++ ) { // find which fog volume the corona is in diff --git a/SP/code/renderer/tr_image.c b/SP/code/renderer/tr_image.c index 1a0eb18..a107ace 100644 --- a/SP/code/renderer/tr_image.c +++ b/SP/code/renderer/tr_image.c @@ -44,49 +44,6 @@ int gl_filter_max = GL_LINEAR; #define FILE_HASH_SIZE 4096 static image_t* hashTable[FILE_HASH_SIZE]; -// Ridah, in order to prevent zone fragmentation, all images will -// be read into this buffer. In order to keep things as fast as possible, -// we'll give it a starting value, which will account for the majority of -// images, but allow it to grow if the buffer isn't big enough -#define R_IMAGE_BUFFER_SIZE ( 512 * 512 * 4 ) // 512 x 512 x 32bit - -typedef enum { - BUFFER_IMAGE, - BUFFER_SCALED, - BUFFER_RESAMPLED, - BUFFER_MAX_TYPES -} bufferMemType_t; - -int imageBufferSize[BUFFER_MAX_TYPES] = {0,0,0}; -void *imageBufferPtr[BUFFER_MAX_TYPES] = {NULL,NULL,NULL}; - -void *R_GetImageBuffer( int size, bufferMemType_t bufferType ) { - if ( imageBufferSize[bufferType] < R_IMAGE_BUFFER_SIZE && size <= imageBufferSize[bufferType] ) { - imageBufferSize[bufferType] = R_IMAGE_BUFFER_SIZE; - imageBufferPtr[bufferType] = malloc( imageBufferSize[bufferType] ); - } - if ( size > imageBufferSize[bufferType] ) { // it needs to grow - if ( imageBufferPtr[bufferType] ) { - free( imageBufferPtr[bufferType] ); - } - imageBufferSize[bufferType] = size; - imageBufferPtr[bufferType] = malloc( imageBufferSize[bufferType] ); - } - - return imageBufferPtr[bufferType]; -} - -void R_FreeImageBuffer( void ) { - int bufferType; - for ( bufferType = 0; bufferType < BUFFER_MAX_TYPES; bufferType++ ) { - if ( !imageBufferPtr[bufferType] ) { - return; - } - free( imageBufferPtr[bufferType] ); - imageBufferSize[bufferType] = 0; - imageBufferPtr[bufferType] = NULL; - } -} /* ** R_GammaCorrect @@ -698,7 +655,7 @@ static void Upload32( unsigned *data, if ( r_rmse->value ) { while ( R_RMSE( (byte *)data, width, height ) < r_rmse->value ) { rmse_saved += ( height * width * 4 ) - ( ( width >> 1 ) * ( height >> 1 ) * 4 ); - resampledBuffer = R_GetImageBuffer( ( width >> 1 ) * ( height >> 1 ) * 4, BUFFER_RESAMPLED ); + resampledBuffer = ri.Hunk_AllocateTempMemory( ( width >> 1 ) * ( height >> 1 ) * 4 ); ResampleTexture( data, width, height, resampledBuffer, width >> 1, height >> 1 ); data = resampledBuffer; width = width >> 1; @@ -712,7 +669,7 @@ static void Upload32( unsigned *data, // just do the RMSE of 1 (reduce perfect) while ( R_RMSE( (byte *)data, width, height ) < 1.0 ) { rmse_saved += ( height * width * 4 ) - ( ( width >> 1 ) * ( height >> 1 ) * 4 ); - resampledBuffer = R_GetImageBuffer( ( width >> 1 ) * ( height >> 1 ) * 4, BUFFER_RESAMPLED ); + resampledBuffer = ri.Hunk_AllocateTempMemory( ( width >> 1 ) * ( height >> 1 ) * 4 ); ResampleTexture( data, width, height, resampledBuffer, width >> 1, height >> 1 ); data = resampledBuffer; width = width >> 1; @@ -728,16 +685,13 @@ static void Upload32( unsigned *data, ; for ( scaled_height = 1 ; scaled_height < height ; scaled_height <<= 1 ) ; - if ( r_roundImagesDown->integer && scaled_width > width ) { + if ( r_roundImagesDown->integer && scaled_width > width ) scaled_width >>= 1; - } - if ( r_roundImagesDown->integer && scaled_height > height ) { + if ( r_roundImagesDown->integer && scaled_height > height ) scaled_height >>= 1; - } if ( scaled_width != width || scaled_height != height ) { - //resampledBuffer = ri.Hunk_AllocateTempMemory( scaled_width * scaled_height * 4 ); - resampledBuffer = R_GetImageBuffer( scaled_width * scaled_height * 4, BUFFER_RESAMPLED ); + resampledBuffer = ri.Hunk_AllocateTempMemory( scaled_width * scaled_height * 4 ); ResampleTexture( data, width, height, resampledBuffer, scaled_width, scaled_height ); data = resampledBuffer; width = scaled_width; @@ -763,7 +717,7 @@ static void Upload32( unsigned *data, // deal with a half mip resampling // while ( scaled_width > glConfig.maxTextureSize - || scaled_height > glConfig.maxTextureSize ) { + || scaled_height > glConfig.maxTextureSize ) { scaled_width >>= 1; scaled_height >>= 1; } @@ -785,7 +739,7 @@ static void Upload32( unsigned *data, ri.Printf( PRINT_ALL, "r_lowMemTextureSize forcing reduction from %i x %i to %i x %i\n", width, height, scaled_width, scaled_height ); - resampledBuffer = R_GetImageBuffer( scaled_width * scaled_height * 4, BUFFER_RESAMPLED ); + resampledBuffer = ri.Hunk_AllocateTempMemory( scaled_width * scaled_height * 4 ); ResampleTexture( data, width, height, resampledBuffer, scaled_width, scaled_height ); data = resampledBuffer; width = scaled_width; @@ -804,8 +758,7 @@ static void Upload32( unsigned *data, scaled_height = 1; } - //scaledBuffer = ri.Hunk_AllocateTempMemory( sizeof( unsigned ) * scaled_width * scaled_height ); - scaledBuffer = R_GetImageBuffer( sizeof( unsigned ) * scaled_width * scaled_height, BUFFER_SCALED ); + scaledBuffer = ri.Hunk_AllocateTempMemory( sizeof( unsigned ) * scaled_width * scaled_height ); // // scan the texture for each channel's max values @@ -1043,10 +996,10 @@ done: GL_CheckErrors(); - //if ( scaledBuffer != 0 ) - // ri.Hunk_FreeTempMemory( scaledBuffer ); - //if ( resampledBuffer != 0 ) - // ri.Hunk_FreeTempMemory( resampledBuffer ); + if ( scaledBuffer != 0 ) + ri.Hunk_FreeTempMemory( scaledBuffer ); + if ( resampledBuffer != 0 ) + ri.Hunk_FreeTempMemory( resampledBuffer ); } @@ -2462,7 +2415,7 @@ qboolean R_CropImage( char *name, byte **pic, int border, int *width, int *heigh #endif // RESIZE #endif // FUNNEL_HACK - temppic = malloc( sizeof( unsigned int ) * diff[0] * diff[1] ); + temppic = ri.Z_Malloc( sizeof( unsigned int ) * diff[0] * diff[1] ); outpixel = temppic; for ( row = mins[1]; row < maxs[1]; row++ ) @@ -2575,7 +2528,7 @@ void R_CropAndNumberImagesInDirectory( char *dir, char *ext, int maxWidth, in #else newWidth = maxWidth; newHeight = maxHeight; - temppic = malloc( sizeof( unsigned int ) * newWidth * newHeight ); + temppic = ri.Z_Malloc( sizeof( unsigned int ) * newWidth * newHeight ); ResampleTexture( (unsigned int *)pic, width, height, (unsigned int *)temppic, newWidth, newHeight ); memcpy( pic, temppic, sizeof( unsigned int ) * newWidth * newHeight ); ri.Free( temppic ); diff --git a/SP/code/renderer/tr_init.c b/SP/code/renderer/tr_init.c index 2c97de1..6f34ff6 100644 --- a/SP/code/renderer/tr_init.c +++ b/SP/code/renderer/tr_init.c @@ -1470,10 +1470,8 @@ void RE_Shutdown( qboolean destroyWindow ) { if ( destroyWindow ) { GLimp_Shutdown(); - // Ridah, release the virtual memory - R_Hunk_End(); - R_FreeImageBuffer(); - //ri.Tag_Free(); // wipe all render alloc'd zone memory + Com_Memset( &glConfig, 0, sizeof( glConfig ) ); + Com_Memset( &glState, 0, sizeof( glState ) ); } tr.registered = qfalse; diff --git a/SP/code/renderer/tr_local.h b/SP/code/renderer/tr_local.h index 9646f5e..4c9ef07 100644 --- a/SP/code/renderer/tr_local.h +++ b/SP/code/renderer/tr_local.h @@ -1519,7 +1519,6 @@ void RB_StageIteratorLightmappedMultitexture( void ); void RB_AddQuadStamp( vec3_t origin, vec3_t left, vec3_t up, byte *color ); void RB_AddQuadStampExt( vec3_t origin, vec3_t left, vec3_t up, byte *color, float s1, float t1, float s2, float t2 ); -void RB_AddQuadStampFadingCornersExt( vec3_t origin, vec3_t left, vec3_t up, byte *color, float s1, float t1, float s2, float t2 ); void RB_ShowImages( void ); @@ -1971,6 +1970,5 @@ extern int drawskyboxportal; // Ridah, virtual memory void *R_Hunk_Begin( void ); void R_Hunk_End( void ); -void R_FreeImageBuffer( void ); #endif //TR_LOCAL_H (THIS MUST BE LAST!!) diff --git a/SP/code/renderer/tr_model.c b/SP/code/renderer/tr_model.c index f2c5aea..c471aff 100644 --- a/SP/code/renderer/tr_model.c +++ b/SP/code/renderer/tr_model.c @@ -571,8 +571,6 @@ qboolean R_MDC_EncodeXyzCompressed( const vec3_t vec, const vec3_t normal, mdcXy int i; unsigned char anorm; - i = sizeof( mdcXyzCompressed_t ); - retval.ofsVec = 0; for ( i = 0; i < 3; i++ ) { if ( fabs( vec[i] ) >= MDC_MAX_DIST ) { @@ -880,7 +878,9 @@ static qboolean R_LoadMDC( model_t *mod, int lod, void *buffer, const char *mod_ md3St_t *st; md3XyzNormal_t *xyz; mdcXyzCompressed_t *xyzComp; +#ifdef Q3_BIG_ENDIAN mdcTag_t *tag; +#endif short *ps; int version; int size; @@ -941,16 +941,16 @@ static qboolean R_LoadMDC( model_t *mod, int lod, void *buffer, const char *mod_ } } +#ifdef Q3_BIG_ENDIAN // swap all the tags tag = ( mdcTag_t * )( (byte *)mod->mdc[lod] + mod->mdc[lod]->ofsTags ); - if ( LittleLong( 1 ) != 1 ) { - for ( i = 0 ; i < mod->mdc[lod]->numTags * mod->mdc[lod]->numFrames ; i++, tag++ ) { - for ( j = 0 ; j < 3 ; j++ ) { - tag->xyz[j] = LittleShort( tag->xyz[j] ); - tag->angles[j] = LittleShort( tag->angles[j] ); - } + for ( i = 0 ; i < mod->mdc[lod]->numTags * mod->mdc[lod]->numFrames ; i++, tag++ ) { + for ( j = 0 ; j < 3 ; j++ ) { + tag->xyz[j] = LittleShort( tag->xyz[j] ); + tag->angles[j] = LittleShort( tag->angles[j] ); } } +#endif // swap all the surfaces surf = ( mdcSurface_t * )( (byte *)mod->mdc[lod] + mod->mdc[lod]->ofsSurfaces ); @@ -2091,7 +2091,7 @@ int R_LerpTag( orientation_t *tag, const refEntity_t *refent, const char *tagNam 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); + R_GetAnimTag((mdrHeader_t *) model->modelData, endFrame, tagName, startIndex, &end); } else if ( model->type == MOD_IQM ) { return R_IQMLerpTag( tag, model->modelData, @@ -2103,7 +2103,7 @@ int R_LerpTag( orientation_t *tag, const refEntity_t *refent, const char *tagNam } else if ( model->type == MOD_MESH ) { // old MD3 style retval = R_GetTag( (byte *)model->md3[0], startFrame, tagName, startIndex, &start ); - retval = R_GetTag( (byte *)model->md3[0], endFrame, tagName, startIndex, &end ); + R_GetTag( (byte *)model->md3[0], endFrame, tagName, startIndex, &end ); } else if ( model->type == MOD_MDS ) { // use bone lerping retval = R_GetBoneTag( tag, model->mds, startIndex, refent, tagNameIn ); @@ -2119,7 +2119,7 @@ int R_LerpTag( orientation_t *tag, const refEntity_t *refent, const char *tagNam mdcTag_t *cstart, *cend; retval = R_GetMDCTag( (byte *)model->mdc[0], startFrame, tagName, startIndex, &cstart ); - retval = R_GetMDCTag( (byte *)model->mdc[0], endFrame, tagName, startIndex, &cend ); + R_GetMDCTag( (byte *)model->mdc[0], endFrame, tagName, startIndex, &cend ); // uncompress the MDC tags into MD3 style tags if ( cstart && cend ) { diff --git a/SP/code/renderer/tr_model_iqm.c b/SP/code/renderer/tr_model_iqm.c index 543aeeb..5ab41c2 100644 --- a/SP/code/renderer/tr_model_iqm.c +++ b/SP/code/renderer/tr_model_iqm.c @@ -144,7 +144,7 @@ qboolean R_LoadIQM( model_t *mod, void *buffer, int filesize, const char *mod_na unsigned short *framedata; char *str; int i, j; - float jointInvMats[IQM_MAX_JOINTS * 12]; + float jointInvMats[IQM_MAX_JOINTS * 12] = {0.0f}; float *mat, *matInv; size_t size, joint_names; iqmData_t *iqmData; diff --git a/SP/code/renderer/tr_shade_calc.c b/SP/code/renderer/tr_shade_calc.c index e687e2f..c9ff99d 100644 --- a/SP/code/renderer/tr_shade_calc.c +++ b/SP/code/renderer/tr_shade_calc.c @@ -781,7 +781,7 @@ void RB_CalcWaveAlpha( const waveForm_t *wf, unsigned char *dstColors ) { */ void RB_CalcModulateColorsByFog( unsigned char *colors ) { int i; - float texCoords[SHADER_MAX_VERTEXES][2]; + float texCoords[SHADER_MAX_VERTEXES][2] = {{0.0f}}; // calculate texcoords so we can derive density // this is not wasted, because it would only have @@ -801,7 +801,7 @@ void RB_CalcModulateColorsByFog( unsigned char *colors ) { */ void RB_CalcModulateAlphasByFog( unsigned char *colors ) { int i; - float texCoords[SHADER_MAX_VERTEXES][2]; + float texCoords[SHADER_MAX_VERTEXES][2] = {{0.0f}}; // calculate texcoords so we can derive density // this is not wasted, because it would only have @@ -819,7 +819,7 @@ void RB_CalcModulateAlphasByFog( unsigned char *colors ) { */ void RB_CalcModulateRGBAsByFog( unsigned char *colors ) { int i; - float texCoords[SHADER_MAX_VERTEXES][2]; + float texCoords[SHADER_MAX_VERTEXES][2] = {{0.0f}}; // calculate texcoords so we can derive density // this is not wasted, because it would only have diff --git a/SP/code/renderer/tr_surface.c b/SP/code/renderer/tr_surface.c index b5f4b5c..6e28b44 100644 --- a/SP/code/renderer/tr_surface.c +++ b/SP/code/renderer/tr_surface.c @@ -75,101 +75,6 @@ void RB_CheckOverflow( int verts, int indexes ) { /* ============== -RB_AddQuadStampFadingCornersExt - - Creates a sprite with the center at colors[3] alpha, and the corners all 0 alpha -============== -*/ -void RB_AddQuadStampFadingCornersExt( vec3_t origin, vec3_t left, vec3_t up, byte *color, float s1, float t1, float s2, float t2 ) { - vec3_t normal; - int ndx; - byte lColor[4]; - - RB_CHECKOVERFLOW( 5, 12 ); - - ndx = tess.numVertexes; - - // triangle indexes for a simple quad - tess.indexes[ tess.numIndexes + 0 ] = ndx + 0; - tess.indexes[ tess.numIndexes + 1 ] = ndx + 1; - tess.indexes[ tess.numIndexes + 2 ] = ndx + 4; - - tess.indexes[ tess.numIndexes + 3 ] = ndx + 1; - tess.indexes[ tess.numIndexes + 4 ] = ndx + 2; - tess.indexes[ tess.numIndexes + 5 ] = ndx + 4; - - tess.indexes[ tess.numIndexes + 6 ] = ndx + 2; - tess.indexes[ tess.numIndexes + 7 ] = ndx + 3; - tess.indexes[ tess.numIndexes + 8 ] = ndx + 4; - - tess.indexes[ tess.numIndexes + 9 ] = ndx + 3; - tess.indexes[ tess.numIndexes + 10] = ndx + 0; - tess.indexes[ tess.numIndexes + 11] = ndx + 4; - - tess.xyz[ndx][0] = origin[0] + left[0] + up[0]; - tess.xyz[ndx][1] = origin[1] + left[1] + up[1]; - tess.xyz[ndx][2] = origin[2] + left[2] + up[2]; - - tess.xyz[ndx + 1][0] = origin[0] - left[0] + up[0]; - tess.xyz[ndx + 1][1] = origin[1] - left[1] + up[1]; - tess.xyz[ndx + 1][2] = origin[2] - left[2] + up[2]; - - tess.xyz[ndx + 2][0] = origin[0] - left[0] - up[0]; - tess.xyz[ndx + 2][1] = origin[1] - left[1] - up[1]; - tess.xyz[ndx + 2][2] = origin[2] - left[2] - up[2]; - - tess.xyz[ndx + 3][0] = origin[0] + left[0] - up[0]; - tess.xyz[ndx + 3][1] = origin[1] + left[1] - up[1]; - tess.xyz[ndx + 3][2] = origin[2] + left[2] - up[2]; - - tess.xyz[ndx + 4][0] = origin[0]; - tess.xyz[ndx + 4][1] = origin[1]; - tess.xyz[ndx + 4][2] = origin[2]; - - - // constant normal all the way around - VectorSubtract( vec3_origin, backEnd.viewParms.or.axis[0], normal ); - - tess.normal[ndx][0] = tess.normal[ndx + 1][0] = tess.normal[ndx + 2][0] = tess.normal[ndx + 3][0] = tess.normal[ndx + 4][0] = normal[0]; - tess.normal[ndx][1] = tess.normal[ndx + 1][1] = tess.normal[ndx + 2][1] = tess.normal[ndx + 3][1] = tess.normal[ndx + 4][1] = normal[1]; - tess.normal[ndx][2] = tess.normal[ndx + 1][2] = tess.normal[ndx + 2][2] = tess.normal[ndx + 3][2] = tess.normal[ndx + 4][2] = normal[2]; - - // standard square texture coordinates - tess.texCoords[ndx][0][0] = tess.texCoords[ndx][1][0] = s1; - tess.texCoords[ndx][0][1] = tess.texCoords[ndx][1][1] = t1; - - tess.texCoords[ndx + 1][0][0] = tess.texCoords[ndx + 1][1][0] = s2; - tess.texCoords[ndx + 1][0][1] = tess.texCoords[ndx + 1][1][1] = t1; - - tess.texCoords[ndx + 2][0][0] = tess.texCoords[ndx + 2][1][0] = s2; - tess.texCoords[ndx + 2][0][1] = tess.texCoords[ndx + 2][1][1] = t2; - - tess.texCoords[ndx + 3][0][0] = tess.texCoords[ndx + 3][1][0] = s1; - tess.texCoords[ndx + 3][0][1] = tess.texCoords[ndx + 3][1][1] = t2; - - tess.texCoords[ndx + 4][0][0] = tess.texCoords[ndx + 4][1][0] = ( s1 + s2 ) / 2.0; - tess.texCoords[ndx + 4][0][1] = tess.texCoords[ndx + 4][1][1] = ( t1 + t2 ) / 2.0; - - // center uses full alpha - *( unsigned int * ) &tess.vertexColors[ndx + 4] = - *( unsigned int * )color; - - // fade around edges - memcpy( lColor, color, sizeof( byte ) * 4 ); - lColor[3] = 0; - *( unsigned int * ) &tess.vertexColors[ndx] = - *( unsigned int * ) &tess.vertexColors[ndx + 1] = - *( unsigned int * ) &tess.vertexColors[ndx + 2] = - *( unsigned int * ) &tess.vertexColors[ndx + 3] = - *( unsigned int * )lColor; - - - tess.numVertexes += 5; - tess.numIndexes += 12; -} - -/* -============== RB_AddQuadStampExt ============== */ diff --git a/SP/code/renderer/tr_world.c b/SP/code/renderer/tr_world.c index 9cb4aa0..5e87506 100644 --- a/SP/code/renderer/tr_world.c +++ b/SP/code/renderer/tr_world.c @@ -474,8 +474,8 @@ static void R_RecursiveWorldNode( mnode_t *node, int planeBits, int dlightBits ) // determine which dlights are needed newDlights[0] = 0; newDlights[1] = 0; -/* -// if ( dlightBits ) + + if ( dlightBits ) { int i; @@ -483,7 +483,7 @@ static void R_RecursiveWorldNode( mnode_t *node, int planeBits, int dlightBits ) dlight_t *dl; float dist; -// if ( dlightBits & ( 1 << i ) ) { + if ( dlightBits & ( 1 << i ) ) { dl = &tr.refdef.dlights[i]; dist = DotProduct( dl->origin, node->plane->normal ) - node->plane->dist; @@ -493,10 +493,10 @@ static void R_RecursiveWorldNode( mnode_t *node, int planeBits, int dlightBits ) if ( dist < dl->radius ) { newDlights[1] |= ( 1 << i ); } -// } + } } } -*/ + // recurse down the children, front side first R_RecursiveWorldNode( node->children[0], planeBits, newDlights[0] ); diff --git a/SP/code/splines/splines.cpp b/SP/code/splines/splines.cpp index 3881f15..52fde71 100644 --- a/SP/code/splines/splines.cpp +++ b/SP/code/splines/splines.cpp @@ -66,6 +66,11 @@ qboolean loadCamera( int camNum, const char *name ) { qboolean getCameraInfo( int camNum, int time, float *origin, float *angles, float *fov ) { idVec3 dir, org; + + dir[0] = 0; + dir[1] = 0; + dir[2] = 0; + if ( camNum < 0 || camNum >= MAX_CAMERAS ) { return qfalse; } @@ -463,7 +468,7 @@ void idSplineList::parse( const char *( *text ) ) { } else if ( Q_stricmp( key.c_str(), "name" ) == 0 ) { name = token; } - token = Com_Parse( text ); + Com_Parse( text ); } while ( 1 ); @@ -958,7 +963,7 @@ void idCameraEvent::parse( const char *( *text ) ) { } else if ( Q_stricmp( key.c_str(), "time" ) == 0 ) { time = atoi( token ); } - token = Com_Parse( text ); + Com_Parse( text ); } while ( 1 ); @@ -1070,7 +1075,7 @@ void idCameraFOV::parse( const char *( *text ) ) { } else if ( Q_stricmp( key.c_str(), "time" ) == 0 ) { time = atoi( token ); } - token = Com_Parse( text ); + Com_Parse( text ); } while ( 1 ); diff --git a/SP/code/ui/ui_main.c b/SP/code/ui/ui_main.c index d658841..e3a3ecb 100644 --- a/SP/code/ui/ui_main.c +++ b/SP/code/ui/ui_main.c @@ -4320,7 +4320,7 @@ void WM_ActivateLimboChat( void ) { menuDef_t *menu; itemDef_t *itemdef; - menu = Menu_GetFocused(); + Menu_GetFocused(); menu = Menus_ActivateByName( "wm_limboChat" ); if ( !menu || g_editItem ) { diff --git a/SP/code/ui/ui_players.c b/SP/code/ui/ui_players.c index 6a88b72..5ea653a 100644 --- a/SP/code/ui/ui_players.c +++ b/SP/code/ui/ui_players.c @@ -1127,6 +1127,7 @@ static qboolean AnimParseAnimConfig( playerInfo_t *animModelInfo, const char *fi token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { // BG_AnimParseError( "end of file without ENDANIMS" ); + break; } } else { // just set it to the equivalent animStrings[] @@ -1152,18 +1153,21 @@ static qboolean AnimParseAnimConfig( playerInfo_t *animModelInfo, const char *fi token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { // BG_AnimParseError( "end of file without ENDANIMS" ); + break; } animations[i].numFrames = atoi( token ); token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { // BG_AnimParseError( "end of file without ENDANIMS: line %i" ); + break; } animations[i].loopFrames = atoi( token ); token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { // BG_AnimParseError( "end of file without ENDANIMS: line %i" ); + break; } fps = atof( token ); if ( fps == 0 ) { @@ -1176,6 +1180,7 @@ static qboolean AnimParseAnimConfig( playerInfo_t *animModelInfo, const char *fi token = COM_ParseExt( &text_p, qfalse ); if ( !token || !token[0] ) { // BG_AnimParseError( "end of file without ENDANIMS" ); + break; } animations[i].moveSpeed = atoi( token ); diff --git a/SP/code/ui/ui_shared.c b/SP/code/ui/ui_shared.c index 30ac739..591394f 100644 --- a/SP/code/ui/ui_shared.c +++ b/SP/code/ui/ui_shared.c @@ -4577,7 +4577,7 @@ void Menu_HandleMouseMove( menuDef_t *menu, float x, float y ) { } } } - } else if ( menu->items[i]->window.flags & WINDOW_MOUSEOVER ) { + } else if ( menu->items[i] && menu->items[i]->window.flags & WINDOW_MOUSEOVER ) { Item_MouseLeave( menu->items[i] ); Item_SetMouseOver( menu->items[i], qfalse ); } @@ -6016,6 +6016,9 @@ qboolean MenuParse_itemDef( itemDef_t *item, int handle ) { menuDef_t *menu = (menuDef_t*)item; if ( menu->itemCount < MAX_MENUITEMS ) { menu->items[menu->itemCount] = UI_Alloc( sizeof( itemDef_t ) ); + if ( !menu->items[menu->itemCount] ) { + return qfalse; + } Item_Init( menu->items[menu->itemCount] ); if ( !Item_Parse( handle, menu->items[menu->itemCount] ) ) { return qfalse; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

