]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
my better shot at float comparisons
authorMartin Taibr <taibr.martin@gmail.com>
Fri, 24 Feb 2017 02:03:45 +0000 (03:03 +0100)
committerMartin Taibr <taibr.martin@gmail.com>
Fri, 24 Feb 2017 02:03:45 +0000 (03:03 +0100)
qcsrc/common/mutators/mutator/damagetext/damagetext.qc
qcsrc/lib/math.qh

index 7fd53f8745ebde58edf46c7b2a00b36d787188cd..686079b4c3271a7a75fa229aa0e58859b6f8950a 100644 (file)
@@ -104,7 +104,7 @@ CLASS(DamageText, Object)
         int potential = rint(this.m_potential_damage / DAMAGETEXT_PRECISION_MULTIPLIER);
         int potential_health = rint((this.m_potential_damage - this.m_armordamage) / DAMAGETEXT_PRECISION_MULTIPLIER);
 
-        bool redundant = almost_equals_eps(this.m_healthdamage + this.m_armordamage, this.m_potential_damage, 10);
+        bool redundant = almost_equals_eps(this.m_healthdamage + this.m_armordamage, this.m_potential_damage, 5);
 
         string s = autocvar_cl_damagetext_format;
         s = strreplace("{armor}", (
@@ -203,7 +203,7 @@ MUTATOR_HOOKFUNCTION(damagetext, PlayerDamaged) {
             if (armor >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_ARMOR;
             if (potential_damage >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_POTENTIAL;
             if (!armor) flags |= DTFLAG_NO_ARMOR;
-            if (almost_equals_eps(armor + health, potential_damage, 10)) flags |= DTFLAG_NO_POTENTIAL;
+            if (almost_equals_eps(armor + health, potential_damage, 5)) flags |= DTFLAG_NO_POTENTIAL;
 
             msg_entity = it;
             WriteHeader(MSG_ONE, damagetext);
index f314afad58a9633dd11923c7cb8aa3f7f523c766..94cdcc6710c2627ef76890036b12ba719bfff365 100644 (file)
@@ -180,7 +180,7 @@ float almost_equals(float a, float b)
 
 float almost_equals_eps(float a, float b, float times_eps)
 {
-       float eps = (max(a, -a) + max(b, -b)) * FLOAT_EPSILON * times_eps;
+       float eps = max(fabs(a), fabs(b)) * FLOAT_EPSILON * times_eps;
        return a - b < eps && b - a < eps;
 }