mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-03-02 15:22:27 +00:00
added preliminary view-kick code
This commit is contained in:
parent
97eee9464b
commit
a59035f44b
1 changed files with 46 additions and 5 deletions
|
@ -128,8 +128,8 @@ global pain sound events for all clients.
|
||||||
*/
|
*/
|
||||||
void P_DamageFeedback( gentity_t *player ) {
|
void P_DamageFeedback( gentity_t *player ) {
|
||||||
gclient_t *client;
|
gclient_t *client;
|
||||||
float count;
|
float count, side;
|
||||||
vec3_t angles;
|
vec3_t angles, v;
|
||||||
|
|
||||||
client = player->client;
|
client = player->client;
|
||||||
if ( client->ps.pm_type == PM_DEAD ) {
|
if ( client->ps.pm_type == PM_DEAD ) {
|
||||||
|
@ -157,10 +157,51 @@ void P_DamageFeedback( gentity_t *player ) {
|
||||||
client->damage_fromWorld = qfalse;
|
client->damage_fromWorld = qfalse;
|
||||||
} else {
|
} else {
|
||||||
vectoangles( client->damage_from, angles );
|
vectoangles( client->damage_from, angles );
|
||||||
client->ps.damagePitch = angles[PITCH]/360.0 * 256;
|
// Q3 Code
|
||||||
client->ps.damageYaw = angles[YAW]/360.0 * 256;
|
/* client->ps.damagePitch = angles[PITCH]/360.0 * 256;
|
||||||
|
client->ps.damageYaw = angles[YAW]/360.0 * 256;*/
|
||||||
|
|
||||||
|
|
||||||
|
// new RQ3 view-kick code, needs more tweaking (the 50 needs to be replaces with that below calcuation
|
||||||
|
// from the AQ2 code.
|
||||||
|
VectorSubtract(client->damage_from, player->s.origin , v);
|
||||||
|
VectorNormalize(v);
|
||||||
|
|
||||||
|
side = -DotProduct(v,forward);
|
||||||
|
client->ps.damagePitch = 50*side*0.3;
|
||||||
|
|
||||||
|
side = - DotProduct(v,right);
|
||||||
|
client->ps.damageYaw = 50*side*0.3;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* AQ2 code pasted here for reference
|
||||||
|
|
||||||
|
kick = abs(client->damage_knockback);
|
||||||
|
if (kick && player->health > 0) // kick of 0 means no view adjust at all
|
||||||
|
{
|
||||||
|
kick = kick * 100 / player->health;
|
||||||
|
|
||||||
|
if (kick < count*0.5)
|
||||||
|
kick = count*0.5;
|
||||||
|
if (kick > 50)
|
||||||
|
kick = 50;
|
||||||
|
|
||||||
|
VectorSubtract (client->damage_from, player->s.origin, v);
|
||||||
|
VectorNormalize (v);
|
||||||
|
|
||||||
|
side = DotProduct (v, right);
|
||||||
|
client->v_dmg_roll = kick*side*0.3;
|
||||||
|
|
||||||
|
side = -DotProduct (v, forward);
|
||||||
|
client->v_dmg_pitch = kick*side*0.3;
|
||||||
|
|
||||||
|
client->v_dmg_time = level.time + DAMAGE_TIME;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
G_Printf("Lasthurt: %d, Head: %d, Face: %d, And-Op: %d\n",
|
G_Printf("Lasthurt: %d, Head: %d, Face: %d, And-Op: %d\n",
|
||||||
|
|
Loading…
Reference in a new issue