limit homing missle turn-rate
This commit is contained in:
parent
b6481037db
commit
685216ca8d
|
@ -3,6 +3,7 @@ D1X-Rebirth Changelog
|
|||
20070113
|
||||
--------
|
||||
main/game.c: fixed key combo to shrink/grow window (lost while porting to GP2X)
|
||||
main/laser.c: limit homing missle turn-rate
|
||||
|
||||
20070110
|
||||
--------
|
||||
|
|
36
main/laser.c
36
main/laser.c
|
@ -29,6 +29,7 @@ static char rcsid[] = "$Id: laser.c,v 1.1.1.1 2006/03/17 19:42:14 zicodxx Exp $"
|
|||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "inferno.h"
|
||||
#include "game.h"
|
||||
|
@ -954,7 +955,11 @@ void Flare_create(object *obj)
|
|||
|
||||
}
|
||||
|
||||
#define HOMING_MISSILE_SCALE 8
|
||||
#define HOMING_MISSILE_SCALE 16
|
||||
|
||||
#define LIMIT_HOMERS 1
|
||||
#define HOMER_MAX_FPS 30
|
||||
#define HOMER_MIN_DELAY (1000 / HOMER_MAX_FPS)
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
// Set object *objp's orientation to (or towards if I'm ambitious) its velocity.
|
||||
|
@ -962,9 +967,36 @@ void homing_missile_turn_towards_velocity(object *objp, vms_vector *norm_vel)
|
|||
{
|
||||
vms_vector new_fvec;
|
||||
|
||||
#ifdef LIMIT_HOMERS
|
||||
static time_t last_time = -1;
|
||||
static int nFrames = 1;
|
||||
time_t this_time, delta_time;
|
||||
fix frame_time;
|
||||
int fps;
|
||||
if (last_time == -1) {
|
||||
last_time = clock ();
|
||||
frame_time = FrameTime;
|
||||
} else {
|
||||
nFrames++;
|
||||
this_time = clock ();
|
||||
delta_time = this_time - last_time;
|
||||
if (delta_time < HOMER_MIN_DELAY) {
|
||||
return;
|
||||
} else {
|
||||
fps = (1000 + delta_time / 2) / delta_time;
|
||||
frame_time = fps ? (f1_0 + fps / 2) / fps : f1_0;
|
||||
// frame_time /= nFrames;
|
||||
nFrames = 0;
|
||||
last_time = this_time;
|
||||
}
|
||||
}
|
||||
#else
|
||||
fix frame_time = FrameTime;
|
||||
#endif
|
||||
|
||||
new_fvec = *norm_vel;
|
||||
|
||||
vm_vec_scale(&new_fvec, FrameTime*HOMING_MISSILE_SCALE);
|
||||
vm_vec_scale(&new_fvec, frame_time * HOMING_MISSILE_SCALE);
|
||||
vm_vec_add2(&new_fvec, &objp->orient.fvec);
|
||||
vm_vec_normalize_quick(&new_fvec);
|
||||
|
||||
|
|
Loading…
Reference in a new issue