From 97eb82f7078ee22a6de3d0ca3f82829aefd95406 Mon Sep 17 00:00:00 2001 From: 0TheSpy Date: Sun, 13 Nov 2022 21:57:56 +0300 Subject: [PATCH] Add files via upload --- SpyCustom/sdk/c_baseentity.h | 4 +- SpyCustom/sdk/checksum_md5.h | 3 + SpyCustom/sdk/mathlib.h | 17 +++++- SpyCustom/sdk/vector.h | 110 +++++++++++++++++++++++++++++++++++ 4 files changed, 132 insertions(+), 2 deletions(-) diff --git a/SpyCustom/sdk/c_baseentity.h b/SpyCustom/sdk/c_baseentity.h index 00e5f8c..3f9ce6b 100644 --- a/SpyCustom/sdk/c_baseentity.h +++ b/SpyCustom/sdk/c_baseentity.h @@ -64,6 +64,8 @@ public: NETVAR2(GetViewOffset, "DT_CSPlayer", "m_vecViewOffset[0]", Vector); NETVAR2(GetVelocity, "DT_CSPlayer", "m_vecVelocity[0]", Vector); + NETVAR2(GetGroundEntity, "DT_BasePlayer", "m_hGroundEntity", int); + int GetSequenceActivity(int sequence, studiohdr_t* hdr) { static auto getSequenceActivity = (DWORD)(FindPatternV2("client.dll", "55 8B EC 53 8B 5D 08 56 8B F1 83")); @@ -83,7 +85,7 @@ public: printf("Set new sequence %d\n",sequence); typedef void(__thiscall* OriginalFn)(void*, int); return getvfunc(this, 246)(this, sequence); - } + } }; diff --git a/SpyCustom/sdk/checksum_md5.h b/SpyCustom/sdk/checksum_md5.h index 1179656..bc80009 100644 --- a/SpyCustom/sdk/checksum_md5.h +++ b/SpyCustom/sdk/checksum_md5.h @@ -48,4 +48,7 @@ inline bool MD5Value_t::operator!=(const MD5Value_t& src) const return !MD5_Compare(*this, src); } +// + + #endif \ No newline at end of file diff --git a/SpyCustom/sdk/mathlib.h b/SpyCustom/sdk/mathlib.h index 9f32d71..4af605f 100644 --- a/SpyCustom/sdk/mathlib.h +++ b/SpyCustom/sdk/mathlib.h @@ -721,7 +721,22 @@ inline int ClampArrayBounds(int n, unsigned maxindex) : \ BoxOnPlaneSide( (emins), (emaxs), (p))) -void AngleVectors(const QAngle& angles, Vector* forward); + +inline void AngleVectors(const QAngle& angles, Vector* forward) +{ + Assert(s_bMathlibInitialized); + Assert(forward); + + float sp, sy, cp, cy; + + SinCos(DEG2RAD(angles[YAW]), &sy, &cy); + SinCos(DEG2RAD(angles[PITCH]), &sp, &cp); + + forward->x = cp * cy; + forward->y = cp * sy; + forward->z = -sp; +} + void AngleVectors(const QAngle& angles, Vector* forward, Vector* right, Vector* up); void AngleVectorsTranspose(const QAngle& angles, Vector* forward, Vector* right, Vector* up); void AngleMatrix(const QAngle& angles, matrix3x4_t& mat); diff --git a/SpyCustom/sdk/vector.h b/SpyCustom/sdk/vector.h index d415f33..b041c7d 100644 --- a/SpyCustom/sdk/vector.h +++ b/SpyCustom/sdk/vector.h @@ -1921,6 +1921,116 @@ inline bool Vector::IsLengthLessThan(float val) const } +#include +#include + +inline void SinCosX(const float rad, float& sin, float& cos) +{ + const __m128 _ps_fopi = _mm_set_ss(1.27323954473516f); + + const __m128 _ps_0p5 = _mm_set_ss(0.5f); + const __m128 _ps_1 = _mm_set_ss(1.0f); + + const __m128 _ps_dp1 = _mm_set_ss(-0.7851562f); + const __m128 _ps_dp2 = _mm_set_ss(-2.4187564849853515625e-4f); + const __m128 _ps_dp3 = _mm_set_ss(-3.77489497744594108e-8f); + + const __m128 _ps_sincof_p0 = _mm_set_ss(2.443315711809948e-5f); + const __m128 _ps_sincof_p1 = _mm_set_ss(8.3321608736e-3f); + const __m128 _ps_sincof_p2 = _mm_set_ss(-1.6666654611e-1f); + const __m128 _ps_coscof_p0 = _mm_set_ss(2.443315711809948e-5f); + const __m128 _ps_coscof_p1 = _mm_set_ss(-1.388731625493765e-3f); + const __m128 _ps_coscof_p2 = _mm_set_ss(4.166664568298827e-2f); + + const __m128i _pi32_1 = _mm_set1_epi32(1); + const __m128i _pi32_i1 = _mm_set1_epi32(~1); + const __m128i _pi32_2 = _mm_set1_epi32(2); + const __m128i _pi32_4 = _mm_set1_epi32(4); + + const __m128 _mask_sign_raw = *(__m128*) & _mm_set1_epi32(0x80000000); + const __m128 _mask_sign_inv = *(__m128*) & _mm_set1_epi32(~0x80000000); + + + __m128 xmm3 = _mm_setzero_ps(); + __m128i emm0, emm2, emm4; + + __m128 sign_bit_cos, sign_bit_sin; + + __m128 x, y, z; + __m128 y1, y2; + + __m128 a = _mm_set_ss(rad); + + x = _mm_and_ps(a, _mask_sign_inv); + y = _mm_mul_ps(x, _ps_fopi); + + emm2 = _mm_cvtps_epi32(y); + emm2 = _mm_add_epi32(emm2, _pi32_1); + emm2 = _mm_and_si128(emm2, _pi32_i1); + y = _mm_cvtepi32_ps(emm2); + + emm4 = emm2; + + emm0 = _mm_and_si128(emm2, _pi32_4); + emm0 = _mm_slli_epi32(emm0, 29); + __m128 swap_sign_bit_sin = _mm_castsi128_ps(emm0); + + emm2 = _mm_and_si128(emm2, _pi32_2); + emm2 = _mm_cmpeq_epi32(emm2, _mm_setzero_si128()); + __m128 poly_mask = _mm_castsi128_ps(emm2); + + x = _mm_add_ps(x, _mm_mul_ps(y, _ps_dp1)); + x = _mm_add_ps(x, _mm_mul_ps(y, _ps_dp2)); + x = _mm_add_ps(x, _mm_mul_ps(y, _ps_dp3)); + + emm4 = _mm_sub_epi32(emm4, _pi32_2); + emm4 = _mm_andnot_si128(emm4, _pi32_4); + emm4 = _mm_slli_epi32(emm4, 29); + + sign_bit_cos = _mm_castsi128_ps(emm4); + sign_bit_sin = _mm_xor_ps(_mm_and_ps(a, _mask_sign_raw), swap_sign_bit_sin); + + z = _mm_mul_ps(x, x); + + y1 = _mm_mul_ps(_ps_coscof_p0, z); + y1 = _mm_add_ps(y1, _ps_coscof_p1); + y1 = _mm_mul_ps(y1, z); + y1 = _mm_add_ps(y1, _ps_coscof_p2); + y1 = _mm_mul_ps(y1, z); + y1 = _mm_mul_ps(y1, z); + y1 = _mm_sub_ps(y1, _mm_mul_ps(z, _ps_0p5)); + y1 = _mm_add_ps(y1, _ps_1); + + y2 = _mm_mul_ps(_ps_sincof_p0, z); + y2 = _mm_add_ps(y2, _ps_sincof_p1); + y2 = _mm_mul_ps(y2, z); + y2 = _mm_add_ps(y2, _ps_sincof_p2); + y2 = _mm_mul_ps(y2, z); + y2 = _mm_mul_ps(y2, x); + y2 = _mm_add_ps(y2, x); + + xmm3 = poly_mask; + + __m128 ysin2 = _mm_and_ps(xmm3, y2); + __m128 ysin1 = _mm_andnot_ps(xmm3, y1); + + sin = _mm_cvtss_f32(_mm_xor_ps(_mm_add_ps(ysin1, ysin2), sign_bit_sin)); + cos = _mm_cvtss_f32(_mm_xor_ps(_mm_add_ps(_mm_sub_ps(y1, ysin1), _mm_sub_ps(y2, ysin2)), sign_bit_cos)); +} + + +inline float sqrt2(float sqr) +{ + float root = 0; + + __asm + { + sqrtss xmm0, sqr + movss root, xmm0 + } + + return root; +}