From 45f4039f3bfa8555c8cb1e5b76a968a6af4cc07f Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Sun, 23 Mar 2025 22:14:48 +0000 Subject: [PATCH] Fix wrong argument order for calculating distance FossilOrigin-Name: 75095b4f6e2b5ed05c3279c84b6862521cf2103ea8c61e13fe09ee6e81723302 --- src/Monster.m | 4 ++-- src/entities.m | 2 +- src/renderparticles.m | 4 ++-- src/savegamedemo.m | 2 +- src/sound.m | 4 ++-- src/weapon.m | 23 +++++++++++------------ src/world.m | 2 +- 7 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/Monster.m b/src/Monster.m index 37719ec..6f5562b 100644 --- a/src/Monster.m +++ b/src/Monster.m @@ -272,7 +272,7 @@ enemylos(Monster *m, OFVector3D *v) } float disttoenemy = - OFDistanceOfVectors3D(self.origin, self.enemy.origin); + OFDistanceOfVectors3D(self.enemy.origin, self.origin); self.pitch = atan2(self.enemy.origin.z - self.origin.z, disttoenemy) * 180 / PI; @@ -470,7 +470,7 @@ enemylos(Monster *m, OFVector3D *v) } else { v.z += monster.eyeHeight; float dist = - OFDistanceOfVectors3D(monster.origin, v); + OFDistanceOfVectors3D(v, monster.origin); v.z -= monster.eyeHeight; if (dist < 4) diff --git a/src/entities.m b/src/entities.m index f7cf5d5..d17ac1a 100644 --- a/src/entities.m +++ b/src/entities.m @@ -321,7 +321,7 @@ checkitems() OFVector3D v = OFMakeVector3D( e.x, e.y, (float)S(e.x, e.y)->floor + player1.eyeHeight); - float dist = OFDistanceOfVectors3D(player1.origin, v); + float dist = OFDistanceOfVectors3D(v, player1.origin); if (dist < (e.type == TELEPORT ? 4 : 2.5)) pickup(i, player1); diff --git a/src/renderparticles.m b/src/renderparticles.m index 6a48f48..7b0f17c 100644 --- a/src/renderparticles.m +++ b/src/renderparticles.m @@ -150,8 +150,8 @@ particle_splash(int type, int num, int fade, OFVector3D p) void particle_trail(int type, int fade, OFVector3D s, OFVector3D e) { - float d = OFDistanceOfVectors3D(s, e); - OFVector3D v = OFSubtractVectors3D(s, e); + float d = OFDistanceOfVectors3D(e, s); + OFVector3D v = OFSubtractVectors3D(e, s); v = OFMultiplyVector3D(v, 1.0f / (d * 2 + 0.1f)); for (int i = 0; i < ((int)d * 2); i++) { s = OFAddVectors3D(s, v); diff --git a/src/savegamedemo.m b/src/savegamedemo.m index d68158c..2cce810 100644 --- a/src/savegamedemo.m +++ b/src/savegamedemo.m @@ -498,7 +498,7 @@ demoplaybackstep() fixwrap(c, player1); fixwrap(z, player1); float dist = - OFDistanceOfVectors3D(z.origin, c.origin); + OFDistanceOfVectors3D(c.origin, z.origin); // if teleport or spawn, don't interpolate if (dist < 16) { catmulrom(z.origin, a.origin, b.origin, diff --git a/src/sound.m b/src/sound.m index 3e127fa..a86b217 100644 --- a/src/sound.m +++ b/src/sound.m @@ -114,8 +114,8 @@ updatechanvol(int chan, const OFVector3D *loc) if (loc) { OFVector3D origin = player1.origin; - float dist = OFDistanceOfVectors3D(*loc, origin); - OFVector3D v = OFSubtractVectors3D(*loc, origin); + float dist = OFDistanceOfVectors3D(origin, *loc); + OFVector3D v = OFSubtractVectors3D(origin, *loc); // simple mono distance attenuation vol -= (int)(dist * 3 * soundvol / 255); diff --git a/src/weapon.m b/src/weapon.m index e85b79f..a3f6382 100644 --- a/src/weapon.m +++ b/src/weapon.m @@ -73,7 +73,7 @@ COMMAND(weapon, ARG_3STR, ^(OFString *a1, OFString *a2, OFString *a3) { void createrays(OFVector3D from, OFVector3D to) { - float dist = OFDistanceOfVectors3D(from, to); + float dist = OFDistanceOfVectors3D(to, from); float f = dist * SGSPREAD / 1000; for (int i = 0; i < SGRAYS; i++) #define RNDD (rnd(101) - 50) * f @@ -185,8 +185,8 @@ radialeffect( return; OFVector3D origin = o.origin; - float dist = OFDistanceOfVectors3D(v, origin); - OFVector3D temp = OFSubtractVectors3D(v, origin); + float dist = OFDistanceOfVectors3D(origin, v); + OFVector3D temp = OFSubtractVectors3D(origin, v); dist -= 2; // account for eye distance imprecision if (dist < RL_DAMRAD) { @@ -195,7 +195,6 @@ radialeffect( int damage = (int)(qdam * (1 - (dist / RL_DAMRAD))); hit(cn, damage, o, at); - temp = OFMultiplyVector3D(temp, (RL_DAMRAD - dist) * damage / 800); o.velocity = OFAddVectors3D(o.velocity, temp); @@ -267,14 +266,14 @@ moveprojectiles(float time) int qdam = guns[p.gun].damage * (p.owner.quadMillis ? 4 : 1); if ([p.owner isKindOfClass:Monster.class]) qdam /= MONSTERDAMAGEFACTOR; - OFVector3D po = p.o, pto = pto; - float dist = OFDistanceOfVectors3D(po, pto); - OFVector3D v = OFSubtractVectors3D(po, pto); + OFVector3D po = p.o, pto = p.to; + float dist = OFDistanceOfVectors3D(pto, po); + OFVector3D v = OFSubtractVectors3D(pto, po); float dtime = dist * 1000 / p.speed; if (time > dtime) dtime = time; v = OFMultiplyVector3D(v, time / dtime); - v = OFAddVectors3D(v, p.o); + v = OFAddVectors3D(v, po); if (p.local) { for (id player in players) if (player != [OFNull null]) @@ -350,8 +349,8 @@ hitpush(int target, int damage, DynamicEntity *d, DynamicEntity *at, OFVector3D from, OFVector3D to) { hit(target, damage, d, at); - float dist = OFDistanceOfVectors3D(from, to); - OFVector3D v = OFSubtractVectors3D(from, to); + float dist = OFDistanceOfVectors3D(to, from); + OFVector3D v = OFSubtractVectors3D(to, from); v = OFMultiplyVector3D(v, damage / dist / 50); d.velocity = OFAddVectors3D(d.velocity, v); } @@ -401,8 +400,8 @@ shoot(DynamicEntity *d, OFVector3D targ) OFVector3D to = targ; from.z -= 0.2f; // below eye - float dist = OFDistanceOfVectors3D(from, to); - OFVector3D unitv = OFSubtractVectors3D(from, to); + float dist = OFDistanceOfVectors3D(to, from); + OFVector3D unitv = OFSubtractVectors3D(to, from); unitv = OFMultiplyVector3D(unitv, 1.0f / dist); OFVector3D kickback = OFMultiplyVector3D(unitv, guns[d.gunSelect].kickamount * -0.01f); diff --git a/src/world.m b/src/world.m index d0f3ebd..f336ed3 100644 --- a/src/world.m +++ b/src/world.m @@ -298,7 +298,7 @@ closestent() // used for delent and edit mode ent display return; OFVector3D v = OFMakeVector3D(e.x, e.y, e.z); - float dist = OFDistanceOfVectors3D(player1.origin, v); + float dist = OFDistanceOfVectors3D(v, player1.origin); if (dist < bdist) { best = i; bdist = dist;