#define vlen2(v) (_vlen2 = (v), dotproduct(_vlen2, _vlen2))
#if 1
-noref float _vdist_f;
/** Vector distance comparison, avoids sqrt() */
-#define vdist(v, cmp, f) (vlen2(v) cmp (_vdist_f = (f), _vdist_f * _vdist_f))
+#define vdist(v, cmp, f) (vlen2(v) cmp ((f) ** 2))
#else
#define vdist(v, cmp, f) (vlen(v) cmp (f))
#endif
ERASEABLE
float boxinsidebox(vector smins, vector smaxs, vector bmins, vector bmaxs) { return smins.x >= bmins.x && smaxs.x <= bmaxs.x && smins.y >= bmins.y && smaxs.y <= bmaxs.y && smins.z >= bmins.z && smaxs.z <= bmaxs.z; }
+#define pointinsidebox(point, bmins, bmaxs) boxinsidebox(point, point, bmins, bmaxs)
+
#define PITCH(v) ((v).x)
#define YAW(v) ((v).y)
#define ROLL(v) ((v).z)