diff options
author | IronClawTrem <louie.nutman@gmail.com> | 2020-03-29 14:45:05 +0100 |
---|---|---|
committer | IronClawTrem <louie.nutman@gmail.com> | 2020-03-29 14:45:05 +0100 |
commit | 4d46255e2317a9febdf36368496fa958056883e2 (patch) | |
tree | fba0c60b70c5616e7055ac142cdd7d22687fdc90 /src/game | |
parent | 0092faa58e55ee8fd29e2887573bffbb8c5d7faa (diff) |
Fix compiler warnings
Mostly a metric ton of unused variables
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/bg_misc.c | 2 | ||||
-rw-r--r-- | src/game/bg_slidemove.c | 4 | ||||
-rw-r--r-- | src/game/g_active.c | 10 | ||||
-rw-r--r-- | src/game/g_admin.c | 41 | ||||
-rw-r--r-- | src/game/g_buildable.c | 2 | ||||
-rw-r--r-- | src/game/g_cmds.c | 12 | ||||
-rw-r--r-- | src/game/g_combat.c | 2 | ||||
-rw-r--r-- | src/game/g_local.h | 2 | ||||
-rw-r--r-- | src/game/g_main.c | 11 | ||||
-rw-r--r-- | src/game/g_maprotation.c | 4 | ||||
-rw-r--r-- | src/game/g_session.c | 4 | ||||
-rw-r--r-- | src/game/g_weapon.c | 50 |
12 files changed, 41 insertions, 103 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index fd50509..cb41601 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -4964,7 +4964,7 @@ Check if a weapon has full ammo */ qboolean BG_WeaponIsFull( weapon_t weapon, int stats[ ], int ammo, int clips ) { - int maxAmmo, maxClips; + int maxAmmo = 0, maxClips = 0; BG_FindAmmoForWeapon( weapon, &maxAmmo, &maxClips ); diff --git a/src/game/bg_slidemove.c b/src/game/bg_slidemove.c index aa32a6a..646475e 100644 --- a/src/game/bg_slidemove.c +++ b/src/game/bg_slidemove.c @@ -290,7 +290,6 @@ PM_StepSlideMove qboolean PM_StepSlideMove( qboolean gravity, qboolean predictive ) { vec3_t start_o, start_v; - vec3_t down_o, down_v; trace_t trace; vec3_t normal; vec3_t step_v, step_vNormal; @@ -339,9 +338,6 @@ qboolean PM_StepSlideMove( qboolean gravity, qboolean predictive ) return stepped; } - VectorCopy( pm->ps->origin, down_o ); - VectorCopy( pm->ps->velocity, down_v ); - VectorCopy( start_o, up ); VectorMA( up, STEPSIZE, normal, up ); diff --git a/src/game/g_active.c b/src/game/g_active.c index a6f246c..1dd27f4 100644 --- a/src/game/g_active.c +++ b/src/game/g_active.c @@ -574,8 +574,7 @@ void ClientTimerActions( gentity_t *ent, int msec ) usercmd_t *ucmd; int aForward, aRight; qboolean walking = qfalse, stopped = qfalse, - crouched = qfalse, jumping = qfalse, - strafing = qfalse; + crouched = qfalse; ucmd = &ent->client->pers.cmd; @@ -601,12 +600,7 @@ void ClientTimerActions( gentity_t *ent, int msec ) else if( aForward <= 64 && aRight <= 64 ) walking = qtrue; - if( aRight > 0 ) - strafing = qtrue; - - if( ucmd->upmove > 0 ) - jumping = qtrue; - else if( ent->client->ps.pm_flags & PMF_DUCKED ) + if( ent->client->ps.pm_flags & PMF_DUCKED ) crouched = qtrue; while ( client->time100 >= 100 ) diff --git a/src/game/g_admin.c b/src/game/g_admin.c index de9f7fe..9ae3faf 100644 --- a/src/game/g_admin.c +++ b/src/game/g_admin.c @@ -704,7 +704,6 @@ void admin_writeconfig( void ) fileHandle_t f; int len, i; int t, expiretime; - char levels[ MAX_STRING_CHARS ] = {""}; if( !g_admin.string[ 0 ] ) { @@ -793,7 +792,6 @@ void admin_writeconfig( void ) } for( i = 0; i < MAX_ADMIN_COMMANDS && g_admin_commands[ i ]; i++ ) { - levels[ 0 ] = '\0'; trap_FS_Write( "[command]\n", 10, f ); trap_FS_Write( "command = ", 10, f ); admin_writeconfig_string( g_admin_commands[ i ]->command, f ); @@ -1187,7 +1185,7 @@ static int admin_listadmins( gentity_t *ent, int start, char *search, int minlev { G_DecolorString( g_admin_levels[ j ]->name, lname ); Com_sprintf( lname_fmt, sizeof( lname_fmt ), "%%%is", - ( admin_level_maxname + strlen( g_admin_levels[ j ]->name ) + (int)( admin_level_maxname + strlen( g_admin_levels[ j ]->name ) - strlen( lname ) ) ); Com_sprintf( lname, sizeof( lname ), lname_fmt, g_admin_levels[ j ]->name ); @@ -1251,7 +1249,7 @@ static int admin_listadmins( gentity_t *ent, int start, char *search, int minlev { G_DecolorString( g_admin_levels[ j ]->name, lname ); Com_sprintf( lname_fmt, sizeof( lname_fmt ), "%%%is", - ( admin_level_maxname + strlen( g_admin_levels[ j ]->name ) + (int)( admin_level_maxname + strlen( g_admin_levels[ j ]->name ) - strlen( lname ) ) ); Com_sprintf( lname, sizeof( lname ), lname_fmt, g_admin_levels[ j ]->name ); @@ -1995,9 +1993,8 @@ qboolean G_admin_readconfig( gentity_t *ent, int skiparg ) qboolean G_admin_time( gentity_t *ent, int skiparg ) { qtime_t qt; - int t; - t = trap_RealTime( &qt ); + trap_RealTime( &qt ); ADMP( va( "^3!time: ^7local time is %02i:%02i:%02i\n", qt.tm_hour, qt.tm_min, qt.tm_sec ) ); @@ -3909,7 +3906,7 @@ qboolean G_admin_adminlog( gentity_t *ent, int skiparg ) t = results[ i ]->time / 1000; G_DecolorString( results[ i ]->name, n1 ); Com_sprintf( fmt_name, sizeof( fmt_name ), "%%%ds", - ( name_length + strlen( results[ i ]->name ) - strlen( n1 ) ) ); + (int)( name_length + strlen( results[ i ]->name ) - strlen( n1 ) ) ); Com_sprintf( n1, sizeof( n1 ), fmt_name, results[ i ]->name ); Com_sprintf( levelbuf, sizeof( levelbuf ), "%2d", results[ i ]->level ); ADMBP( va( "%s%3d %3d:%02d %2s ^7%s^7 %s!%s ^7%s^7\n", @@ -4329,7 +4326,6 @@ qboolean G_admin_mute( gentity_t *ent, int skiparg ) qboolean G_admin_cp( gentity_t *ent, int skiparg ) { int minargc; - char *s; minargc = 2 + skiparg; @@ -4339,7 +4335,6 @@ qboolean G_admin_cp( gentity_t *ent, int skiparg ) return qfalse; } - s = G_SayConcatArgs( 1 + skiparg ); G_CP(ent); return qtrue; } @@ -5396,12 +5391,12 @@ qboolean G_admin_showbans( gentity_t *ent, int skiparg ) G_DecolorString( g_admin_bans[ i ]->name, n1 ); Com_sprintf( name_fmt, sizeof( name_fmt ), "%%%is", - ( max_name + strlen( g_admin_bans[ i ]->name ) - strlen( n1 ) ) ); + (int)( max_name + strlen( g_admin_bans[ i ]->name ) - strlen( n1 ) ) ); Com_sprintf( n1, sizeof( n1 ), name_fmt, g_admin_bans[ i ]->name ); G_DecolorString( g_admin_bans[ i ]->banner, n2 ); Com_sprintf( banner_fmt, sizeof( banner_fmt ), "%%%is", - ( max_banner + strlen( g_admin_bans[ i ]->banner ) - strlen( n2 ) ) ); + (int)( max_banner + strlen( g_admin_bans[ i ]->banner ) - strlen( n2 ) ) ); Com_sprintf( n2, sizeof( n2 ), banner_fmt, g_admin_bans[ i ]->banner ); bannerslevel = g_admin_bans[ i ]->bannerlevel; @@ -5983,7 +5978,7 @@ qboolean G_admin_register(gentity_t *ent, int skiparg ){ return qfalse; } - trap_SendConsoleCommand( EXEC_APPEND,va( "!setlevel %d %d;",ent - g_entities, level) ); + trap_SendConsoleCommand( EXEC_APPEND,va( "!setlevel %d %d;",(int)(ent - g_entities), level) ); AP( va( "print \"^3!register: ^7%s^7 is now a protected nickname.\n\"", ent->client->pers.netname) ); @@ -7077,7 +7072,7 @@ qboolean G_admin_revert( gentity_t *ent, int skiparg ) Com_sprintf( argbuf, sizeof argbuf, "%s%s%s%s%s%s%s!", ( repeat > 1 ) ? "x" : "", ( repeat > 1 ) ? va( "%d ", repeat ) : "", ( ID ) ? "#" : "", ( ID ) ? va( "%d ", ptr->ID ) : "", - ( builder ) ? "-" : "", ( builder ) ? va( "%d ", builder - g_entities ) : "", + ( builder ) ? "-" : "", ( builder ) ? va( "%d ", (int)( builder - g_entities ) ) : "", ( team == PTE_ALIENS ) ? "a " : ( team == PTE_HUMANS ) ? "h " : "" ); ADMP( va( "^3!revert: ^7revert aborted: reverting this %s would conflict with " "another buildable, use ^3!revert %s ^7to override\n", action, argbuf ) ); @@ -7132,7 +7127,7 @@ qboolean G_admin_revert( gentity_t *ent, int skiparg ) Com_sprintf( argbuf, sizeof argbuf, "%s%s%s%s%s%s%s!", ( repeat > 1 ) ? "x" : "", ( repeat > 1 ) ? va( "%d ", repeat ) : "", ( ID ) ? "#" : "", ( ID ) ? va( "%d ", ptr->ID ) : "", - ( builder ) ? "-" : "", ( builder ) ? va( "%d ", builder - g_entities ) : "", + ( builder ) ? "-" : "", ( builder ) ? va( "%d ", (int)( builder - g_entities ) ) : "", ( team == PTE_ALIENS ) ? "a " : ( team == PTE_HUMANS ) ? "h " : "" ); ADMP( va( "^3!revert: ^7revert aborted: reverting this %s would " "conflict with another buildable, use ^3!revert %s ^7to override\n", @@ -7476,7 +7471,7 @@ qboolean G_admin_L0(gentity_t *ent, int skiparg ){ qboolean G_admin_L1(gentity_t *ent, int skiparg ){ int pids[ MAX_CLIENTS ]; - char name[ MAX_NAME_LENGTH ], *reason, err[ MAX_STRING_CHARS ]; + char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ]; int minargc; minargc = 2 + skiparg; @@ -7487,7 +7482,6 @@ qboolean G_admin_L1(gentity_t *ent, int skiparg ){ return qfalse; } G_SayArgv( 1 + skiparg, name, sizeof( name ) ); - reason = G_SayConcatArgs( 2 + skiparg ); if( G_ClientNumbersFromString( name, pids ) != 1 ) { G_MatchOnePlayer( pids, err, sizeof( err ) ); @@ -7535,12 +7529,9 @@ qboolean G_admin_invisible( gentity_t *ent, int skiparg ) qboolean G_admin_decon( gentity_t *ent, int skiparg ) { - int i = 0, j = 0, repeat = 24, pids[ MAX_CLIENTS ], len, matchlen = 0; - pTeam_t team = PTE_NONE; - qboolean force = qfalse, reached = qfalse; - gentity_t *builder = NULL, *targ; - buildHistory_t *ptr, *tmp, *mark, *prev; - vec3_t dist; + int repeat = 24, pids[ MAX_CLIENTS ], len, matchlen = 0; + gentity_t *builder = NULL; + buildHistory_t *ptr, *tmp, *prev; char arg[ 64 ], err[ MAX_STRING_CHARS ], *name, *bname, *action, *article, *reason; len = G_CountBuildLog( ); @@ -7578,7 +7569,7 @@ qboolean G_admin_decon( gentity_t *ent, int skiparg ) return qfalse; } - for( i = 0, ptr = prev = level.buildHistory; repeat > 0; repeat--, j = 0 ) + for( ptr = prev = level.buildHistory; repeat > 0; repeat-- ) { if( !ptr ) break; @@ -7678,7 +7669,7 @@ qboolean G_admin_decon( gentity_t *ent, int skiparg ) admin_writeconfig(); trap_SendServerCommand( pids[ 0 ], - va( "disconnect \"You have been kicked.\n%s^7\nreason:\n%s\n%s\"", + va( "disconnect \"You have been kicked.\n%s^7\nreason:\n%s\"", ( ent ) ? va( "admin:\n%s", G_admin_adminPrintName( ent ) ) : "admin\nconsole", ( *reason ) ? reason : "^1Decon" ) ); @@ -8526,7 +8517,7 @@ qboolean G_admin_switch( gentity_t *ent, int skiparg ) qboolean G_admin_drug( gentity_t *ent, int skiparg ) { - int pids[ MAX_CLIENTS ], found; + int pids[ MAX_CLIENTS ]; char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ]; int minargc; gentity_t *vic; diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c index 30b9d20..c685606 100644 --- a/src/game/g_buildable.c +++ b/src/game/g_buildable.c @@ -3370,7 +3370,6 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance qboolean invert; int contents; playerState_t *ps = &ent->client->ps; - int buildPoints; gentity_t *tmp; itemBuildError_t tempReason; @@ -3398,7 +3397,6 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance reason = IBE_NORMAL; contents = trap_PointContents( entity_origin, -1 ); - buildPoints = BG_FindBuildPointsForBuildable( buildable ); //check if we are near a nobuild marker, if so, can't build here... for( i = 0; i < MAX_GENTITIES; i++ ) diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 764623b..a9e7daa 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -2374,9 +2374,10 @@ void Cmd_CallTeamVote_f( gentity_t *ent ) Q_CleanStr( name ); if( G_admin_permission( &g_entities[ clientNum ], ADMF_IMMUNITY ) ) { - char reasonprint[ MAX_STRING_CHARS ] = ""; - if( reason[ 0 ] != '\0' ) - Com_sprintf(reasonprint, sizeof(reasonprint), "With reason: %s", reason); + char reasonprint[ MAX_STRING_CHARS ] = {0}; + + if( reason[ 0 ] != '\0' ) + Com_sprintf(reasonprint, sizeof(reasonprint), "With reason: %s", reason); Com_sprintf( message, sizeof( message ), "%s^7 attempted /callteamvote %s %s on immune admin %s^7 %s^7", ent->client->pers.netname, arg1, arg2, g_entities[ clientNum ].client->pers.netname, reasonprint ); @@ -5043,8 +5044,7 @@ static void Cmd_Ignore_f( gentity_t *ent ) return; } - if( g_floodMinTime.integer ) - if ( G_Flood_Limited( ent ) ) + if( g_floodMinTime.integer && G_Flood_Limited( ent ) ) { trap_SendServerCommand( ent-g_entities, "print \"Your chat is flood-limited; wait before chatting again\n\"" ); return; @@ -5607,7 +5607,7 @@ void G_PrivateMessage( gentity_t *ent ) matches, color, msg, - ent ? ent-g_entities : -1 ) ); + ent ? (int)(ent-g_entities) : -1 ) ); trap_SendServerCommand( pids[ i ], va( "cp \"^%cprivate message from ^7%s^7\"", color, diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 85880ef..aef76d1 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1156,7 +1156,6 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, { gclient_t *client; int take; - int save; int asave = 0; int knockback = 0; float damagemodifier=0.0; @@ -1353,7 +1352,6 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, } take = damage; - save = 0; // add to the damage inflicted on a player this frame // the total will be turned into screen blends and view angle kicks diff --git a/src/game/g_local.h b/src/game/g_local.h index b5e6e8c..ded4d63 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -1304,7 +1304,7 @@ connectionRecord_t *G_FindConnectionForCode( int code ); extern level_locals_t level; extern gentity_t g_entities[ MAX_GENTITIES ]; -#define FOFS(x) ((int)&(((gentity_t *)0)->x)) +#define FOFS(x) ((intptr_t)&(((gentity_t *)0)->x)) extern vmCvar_t g_dedicated; extern vmCvar_t g_cheats; diff --git a/src/game/g_main.c b/src/game/g_main.c index bffbdf7..9bf9b38 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -774,15 +774,13 @@ void G_InitGame( int levelTime, int randomSeed, int restart ) { char serverinfo[ MAX_INFO_STRING ]; qtime_t qt; - int t; - trap_GetServerinfo( serverinfo, sizeof( serverinfo ) ); G_LogPrintf( "------------------------------------------------------------\n" ); G_LogPrintf( "InitGame: %s\n", serverinfo ); - t = trap_RealTime( &qt ); + trap_RealTime( &qt ); G_LogPrintf("RealTime: %04i/%02i/%02i %02i:%02i:%02i\n", qt.tm_year+1900, qt.tm_mon+1, qt.tm_mday, qt.tm_hour, qt.tm_min, qt.tm_sec ); @@ -2873,7 +2871,6 @@ void G_RunFrame( int levelTime ) int i; gentity_t *ent; int msec; - int start, end; // if we are waiting for the level to restart, do nothing if( level.restarted ) @@ -2910,7 +2907,6 @@ void G_RunFrame( int levelTime ) // // go through all allocated objects // - start = trap_Milliseconds( ); ent = &g_entities[ 0 ]; for( i = 0; i < level.num_entities; i++, ent++ ) @@ -2989,9 +2985,6 @@ void G_RunFrame( int levelTime ) G_RunThink( ent ); } - end = trap_Milliseconds(); - - start = trap_Milliseconds(); // perform final fixups on the players ent = &g_entities[ 0 ]; @@ -3005,8 +2998,6 @@ void G_RunFrame( int levelTime ) // save position information for all active clients G_UnlaggedStore( ); - end = trap_Milliseconds(); - //TA: G_CountSpawns( ); G_CalculateBuildPoints( ); diff --git a/src/game/g_maprotation.c b/src/game/g_maprotation.c index a846c79..64822a2 100644 --- a/src/game/g_maprotation.c +++ b/src/game/g_maprotation.c @@ -1101,10 +1101,10 @@ static int G_GetMapVoteWinner( int *winvotes, int *totalvotes, int *resultorder qboolean G_IntermissionMapVoteWinner( void ) { - int winner, winvotes, totalvotes; + int winvotes, totalvotes; int nonvotes; - winner = G_GetMapVoteWinner( &winvotes, &totalvotes, NULL ); + G_GetMapVoteWinner( &winvotes, &totalvotes, NULL ); if( winvotes * 2 > level.numConnectedClients ) return qtrue; nonvotes = level.numConnectedClients - totalvotes; diff --git a/src/game/g_session.c b/src/game/g_session.c index ef78e8a..5fdf5b8 100644 --- a/src/game/g_session.c +++ b/src/game/g_session.c @@ -59,7 +59,7 @@ void G_WriteClientSessionData( gclient_t *client ) BG_ClientListString( &client->sess.ignoreList ) ); - var = va( "session%i", client - level.clients ); + var = va( "session%i", (int)(client - level.clients) ); trap_Cvar_Set( var, s ); } @@ -83,7 +83,7 @@ void G_ReadSessionData( gclient_t *client ) int restartTeam; int invisible; - var = va( "session%i", client - level.clients ); + var = va( "session%i", (int)(client - level.clients) ); trap_Cvar_VariableStringBuffer( var, s, sizeof(s) ); // FIXME: should be using BG_ClientListParse() for ignoreList, but diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index 00e8eab..e50594a 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -451,11 +451,7 @@ LOCKBLOB void lockBlobLauncherFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_lockblob( ent, muzzle, forward ); - -// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics + fire_lockblob( ent, muzzle, forward ); } /* @@ -468,11 +464,7 @@ HIVE void hiveFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_hive( ent, muzzle, forward ); - -// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics + fire_hive( ent, muzzle, forward ); } /* @@ -485,11 +477,7 @@ BLASTER PISTOL void blasterFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_blaster( ent, muzzle, forward ); - -// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics + fire_blaster( ent, muzzle, forward ); } /* @@ -502,11 +490,7 @@ PULSE RIFLE void pulseRifleFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_pulseRifle( ent, muzzle, forward ); - -// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics + fire_pulseRifle( ent, muzzle, forward ); } /* @@ -519,9 +503,7 @@ FLAME THROWER void flamerFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_flamer( ent, muzzle, forward ); + fire_flamer( ent, muzzle, forward ); } /* @@ -534,9 +516,7 @@ GRENADE void throwGrenade( gentity_t *ent ) { - gentity_t *m; - - m = launch_grenade( ent, muzzle, forward ); + launch_grenade( ent, muzzle, forward ); } /* @@ -666,17 +646,15 @@ LCChargeFire */ void LCChargeFire( gentity_t *ent, qboolean secondary ) { - gentity_t *m; - if( secondary ) { - m = fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE, + fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE, LCANNON_SECONDARY_RADIUS ); ent->client->ps.weaponTime = LCANNON_REPEAT; } else { - m = fire_luciferCannon( ent, muzzle, forward, ent->client->ps.stats[ STAT_MISC ], LCANNON_RADIUS ); + fire_luciferCannon( ent, muzzle, forward, ent->client->ps.stats[ STAT_MISC ], LCANNON_RADIUS ); ent->client->ps.weaponTime = LCANNON_CHARGEREPEAT; } @@ -856,11 +834,7 @@ void buildFire( gentity_t *ent, dynMenu_t menu ) void slowBlobFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_slowBlob( ent, muzzle, forward ); - -// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics + fire_slowBlob( ent, muzzle, forward ); } @@ -1421,11 +1395,7 @@ qboolean CheckPounceAttack( gentity_t *ent ) void bounceBallFire( gentity_t *ent ) { - gentity_t *m; - - m = fire_bounceBall( ent, muzzle, forward ); - -// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics + fire_bounceBall( ent, muzzle, forward ); } |