]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/damage.qc
Small optimization to the damage code
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / damage.qc
index eb70572c02322674308a557c1d484c6a14045b85..99c99153aaa54e3e74a591d998b6640fd6bfb3d1 100644 (file)
@@ -919,9 +919,14 @@ float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector in
                if (((cantbe != targ) && !mustbe) || (mustbe == targ))
                if (targ.takedamage)
                {
-                       // measure distance from nearest point on target (not origin)
-                       // to nearest point on inflictor (not origin)
+                       // calculate distance from nearest point on target to nearest point on inflictor
+                       // instead of origin to ensure full damage on impacts
+
                        vector nearest = targ.WarpZone_findradius_nearest;
+
+                       // optimize code by getting inflictororigin_wz from WarpZone_FindRadius calculations instead of
+                       //vector inflictororigin_wz = WarpZone_TransformOrigin(targ, inflictororigin);
+
                        vector inflictororigin_wz = targ.WarpZone_findradius_nearest + targ.WarpZone_findradius_dist;
                        vector inflictornearest = NearestPointOnBoundingBox(
                                inflictororigin_wz + inflictor.mins, inflictororigin_wz + inflictor.maxs, nearest);
@@ -940,15 +945,12 @@ float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector in
                                        float a;
                                        float c;
                                        vector hitloc;
-                                       vector myblastorigin;
                                        vector center;
 
-                                       myblastorigin = WarpZone_TransformOrigin(targ, inflictororigin);
-
                                        // if it's a player, use the view origin as reference
                                        center = CENTER_OR_VIEWOFS(targ);
 
-                                       force = normalize(center - myblastorigin);
+                                       force = normalize(center - inflictororigin_wz);
                                        force = force * (finaldmg / max(coredamage, edgedamage)) * forceintensity;
                                        hitloc = nearest;