hitdelay
Platinum Üye
- Katılım
- 14 Eyl 2025
- Mesajlar
- 139
- Beğeniler
- 32
- İletişim

yaptığım esp çalışıyor fakat boxlar kaymış durumda, nerede hata yapmış olabilirim
namespace {
bool worldToScreen(glm::vec3 pointInWorld, glm::vec2& screen, float* modelView, float* projection, float* viewPort)
{
glm::vec4 clipSpacePos;
clipSpacePos.x = pointInWorld.x * modelView[0] + pointInWorld.y * modelView[4] + pointInWorld.z * modelView[8] + modelView[12];
clipSpacePos.y = pointInWorld.x * modelView[1] + pointInWorld.y * modelView[5] + pointInWorld.z * modelView[9] + modelView[13];
clipSpacePos.z = pointInWorld.x * modelView[2] + pointInWorld.y * modelView[6] + pointInWorld.z * modelView[10] + modelView[14];
clipSpacePos.w = pointInWorld.x * modelView[3] + pointInWorld.y * modelView[7] + pointInWorld.z * modelView[11] + modelView[15];
glm::vec4 projPos;
projPos.x = clipSpacePos.x * projection[0] + clipSpacePos.y * projection[4] + clipSpacePos.z * projection[8] + clipSpacePos.w * projection[12];
projPos.y = clipSpacePos.x * projection[1] + clipSpacePos.y * projection[5] + clipSpacePos.z * projection[9] + clipSpacePos.w * projection[13];
projPos.z = clipSpacePos.x * projection[2] + clipSpacePos.y * projection[6] + clipSpacePos.z * projection[10] + clipSpacePos.w * projection[14];
projPos.w = clipSpacePos.x * projection[3] + clipSpacePos.y * projection[7] + clipSpacePos.z * projection[11] + clipSpacePos.w * projection[15];
if (std::abs(projPos.w) < 0.0001f)
return false;
glm::vec3 ndcSpacePos = glm::vec3(projPos.x / projPos.w, projPos.y / projPos.w, projPos.z / projPos.w);
if (ndcSpacePos.z < -10.0f || ndcSpacePos.z > 10.0f)
return false;
if (ndcSpacePos.x < -10.0f || ndcSpacePos.x > 10.0f || ndcSpacePos.y < -10.0f || ndcSpacePos.y > 10.0f)
return false;
screen.x = ((ndcSpacePos.x + 1.0f) / 2.0f) * viewPort[2] + viewPort[0];
screen.y = ((1.0f - ndcSpacePos.y) / 2.0f) * viewPort[3] + viewPort[1];
return true;
}
void getViewport(float* viewport, ::cache& cache)
{
maps::Window window = cache.instance.getWindow();
if (window)
{
int width = window.getScaledWidth();
int height = window.getScaledHeight();
if (width > 0 && height > 0)
{
viewport[0] = 0.0f;
viewport[1] = 0.0f;
viewport[2] = (float)width;
viewport[3] = (float)height;
return;
}
}
try {
int viewportArray[4] = { 0, 0, 1920, 1080 };
glGetIntegerv(GL_VIEWPORT, viewportArray);
viewport[0] = (float)viewportArray[0];
viewport[1] = (float)viewportArray[1];
viewport[2] = (float)viewportArray[2];
viewport[3] = (float)viewportArray[3];
}
catch (...) {
viewport[0] = 0.0f;
viewport[1] = 0.0f;
viewport[2] = 1920.0f;
viewport[3] = 1080.0f;
}
if (viewport[2] <= 0 || viewport[3] <= 0 || viewport[2] > 10000 || viewport[3] > 10000)
{
viewport[0] = 0.0f;
viewport[1] = 0.0f;
viewport[2] = 1920.0f;
viewport[3] = 1080.0f;
}
}
void getMatrices(float* modelView, float* projection, float* viewport, ::cache& cache)
{
float yawRad, pitchRad;
maths::vector3d camPos;
maps::Camera cam{ nullptr };
try {
if (cache.entityRenderDispatcher) {
cam = cache.entityRenderDispatcher.camera.get();
}
}
catch (...) {
cam = maps::Camera{ nullptr };
}
if (cam)
{
float camPitch = cam.getPitch();
float camYaw = cam.getYaw();
maps::Vec3d camPosVec = cam.getPos();
camPos = camPosVec.to_vector3d();
yawRad = (camYaw + 180.0f) * 3.14159f / 180.0f;
pitchRad = camPitch * 3.14159f / 180.0f;
}
else
{
float tickDelta = 0.0f;
maths::angles playerRot = cache.player.get_prev_angles() +
(cache.player.get_angles() - cache.player.get_prev_angles()) * tickDelta;
camPos = cache.player.get_prev_position() +
(cache.player.get_position() - cache.player.get_prev_position()) * tickDelta;
float eyeHeight = cache.player.getEyeHeight(cache.player.getPose());
camPos.y += eyeHeight;
yawRad = playerRot.yaw * 3.14159f / 180.0f;
pitchRad = playerRot.pitch * 3.14159f / 180.0f;
}
float cosYaw = cosf(yawRad);
float sinYaw = sinf(yawRad);
float cosPitch = cosf(pitchRad);
float sinPitch = sinf(pitchRad);
float forwardX = -sinYaw * cosPitch;
float forwardY = -sinPitch;
float forwardZ = cosYaw * cosPitch;
float worldUpX = 0.0f;
float worldUpY = 1.0f;
float worldUpZ = 0.0f;
float rightX = forwardY * worldUpZ - forwardZ * worldUpY;
float rightY = forwardZ * worldUpX - forwardX * worldUpZ;
float rightZ = forwardX * worldUpY - forwardY * worldUpX;
rightX = -rightX;
rightY = -rightY;
rightZ = -rightZ;
float rightLen = sqrtf(rightX * rightX + rightY * rightY + rightZ * rightZ);
if (rightLen > 0.0001f) {
rightX /= rightLen;
rightY /= rightLen;
rightZ /= rightLen;
} else {
rightX = 1.0f;
rightY = 0.0f;
rightZ = 0.0f;
}
float upX = forwardY * rightZ - forwardZ * rightY;
float upY = forwardZ * rightX - forwardX * rightZ;
float upZ = forwardX * rightY - forwardY * rightX;
float upLen = sqrtf(upX * upX + upY * upY + upZ * upZ);
if (upLen > 0.0001f) {
upX /= upLen;
upY /= upLen;
upZ /= upLen;
} else {
upX = 0.0f;
upY = 1.0f;
upZ = 0.0f;
}
modelView[0] = rightX;
modelView[1] = rightY;
modelView[2] = rightZ;
modelView[3] = 0.0f;
modelView[4] = upX;
modelView[5] = upY;
modelView[6] = upZ;
modelView[7] = 0.0f;
modelView[8] = -forwardX;
modelView[9] = -forwardY;
modelView[10] = -forwardZ;
modelView[11] = 0.0f;
modelView[12] = -(camPos.x * rightX + camPos.y * rightY + camPos.z * rightZ);
modelView[13] = -(camPos.x * upX + camPos.y * upY + camPos.z * upZ);
modelView[14] = -(camPos.x * (-forwardX) + camPos.y * (-forwardY) + camPos.z * (-forwardZ));
modelView[15] = 1.0f;
float fov = 70.0f;
if (viewport[2] <= 0 || viewport[3] <= 0)
{
for (int i = 0; i < 16; i++)
projection = (i % 5 == 0) ? 1.0f : 0.0f;
return;
}
float aspect = viewport[2] / viewport[3];
float nearPlane = 0.1f;
float farPlane = 1000.0f;
float f = 1.0f / tanf(fov * 0.5f * 3.14159f / 180.0f);
for (int i = 0; i < 16; i++)
projection = 0.0f;
projection[0] = f / aspect;
projection[5] = f;
projection[10] = (farPlane + nearPlane) / (nearPlane - farPlane);
projection[11] = -1.0f;
projection[14] = (2.0f * farPlane * nearPlane) / (nearPlane - farPlane);
}
}
Linkleri görebilmek için kayıt olmanız gerekmektedir
namespace {
bool worldToScreen(glm::vec3 pointInWorld, glm::vec2& screen, float* modelView, float* projection, float* viewPort)
{
glm::vec4 clipSpacePos;
clipSpacePos.x = pointInWorld.x * modelView[0] + pointInWorld.y * modelView[4] + pointInWorld.z * modelView[8] + modelView[12];
clipSpacePos.y = pointInWorld.x * modelView[1] + pointInWorld.y * modelView[5] + pointInWorld.z * modelView[9] + modelView[13];
clipSpacePos.z = pointInWorld.x * modelView[2] + pointInWorld.y * modelView[6] + pointInWorld.z * modelView[10] + modelView[14];
clipSpacePos.w = pointInWorld.x * modelView[3] + pointInWorld.y * modelView[7] + pointInWorld.z * modelView[11] + modelView[15];
glm::vec4 projPos;
projPos.x = clipSpacePos.x * projection[0] + clipSpacePos.y * projection[4] + clipSpacePos.z * projection[8] + clipSpacePos.w * projection[12];
projPos.y = clipSpacePos.x * projection[1] + clipSpacePos.y * projection[5] + clipSpacePos.z * projection[9] + clipSpacePos.w * projection[13];
projPos.z = clipSpacePos.x * projection[2] + clipSpacePos.y * projection[6] + clipSpacePos.z * projection[10] + clipSpacePos.w * projection[14];
projPos.w = clipSpacePos.x * projection[3] + clipSpacePos.y * projection[7] + clipSpacePos.z * projection[11] + clipSpacePos.w * projection[15];
if (std::abs(projPos.w) < 0.0001f)
return false;
glm::vec3 ndcSpacePos = glm::vec3(projPos.x / projPos.w, projPos.y / projPos.w, projPos.z / projPos.w);
if (ndcSpacePos.z < -10.0f || ndcSpacePos.z > 10.0f)
return false;
if (ndcSpacePos.x < -10.0f || ndcSpacePos.x > 10.0f || ndcSpacePos.y < -10.0f || ndcSpacePos.y > 10.0f)
return false;
screen.x = ((ndcSpacePos.x + 1.0f) / 2.0f) * viewPort[2] + viewPort[0];
screen.y = ((1.0f - ndcSpacePos.y) / 2.0f) * viewPort[3] + viewPort[1];
return true;
}
void getViewport(float* viewport, ::cache& cache)
{
maps::Window window = cache.instance.getWindow();
if (window)
{
int width = window.getScaledWidth();
int height = window.getScaledHeight();
if (width > 0 && height > 0)
{
viewport[0] = 0.0f;
viewport[1] = 0.0f;
viewport[2] = (float)width;
viewport[3] = (float)height;
return;
}
}
try {
int viewportArray[4] = { 0, 0, 1920, 1080 };
glGetIntegerv(GL_VIEWPORT, viewportArray);
viewport[0] = (float)viewportArray[0];
viewport[1] = (float)viewportArray[1];
viewport[2] = (float)viewportArray[2];
viewport[3] = (float)viewportArray[3];
}
catch (...) {
viewport[0] = 0.0f;
viewport[1] = 0.0f;
viewport[2] = 1920.0f;
viewport[3] = 1080.0f;
}
if (viewport[2] <= 0 || viewport[3] <= 0 || viewport[2] > 10000 || viewport[3] > 10000)
{
viewport[0] = 0.0f;
viewport[1] = 0.0f;
viewport[2] = 1920.0f;
viewport[3] = 1080.0f;
}
}
void getMatrices(float* modelView, float* projection, float* viewport, ::cache& cache)
{
float yawRad, pitchRad;
maths::vector3d camPos;
maps::Camera cam{ nullptr };
try {
if (cache.entityRenderDispatcher) {
cam = cache.entityRenderDispatcher.camera.get();
}
}
catch (...) {
cam = maps::Camera{ nullptr };
}
if (cam)
{
float camPitch = cam.getPitch();
float camYaw = cam.getYaw();
maps::Vec3d camPosVec = cam.getPos();
camPos = camPosVec.to_vector3d();
yawRad = (camYaw + 180.0f) * 3.14159f / 180.0f;
pitchRad = camPitch * 3.14159f / 180.0f;
}
else
{
float tickDelta = 0.0f;
maths::angles playerRot = cache.player.get_prev_angles() +
(cache.player.get_angles() - cache.player.get_prev_angles()) * tickDelta;
camPos = cache.player.get_prev_position() +
(cache.player.get_position() - cache.player.get_prev_position()) * tickDelta;
float eyeHeight = cache.player.getEyeHeight(cache.player.getPose());
camPos.y += eyeHeight;
yawRad = playerRot.yaw * 3.14159f / 180.0f;
pitchRad = playerRot.pitch * 3.14159f / 180.0f;
}
float cosYaw = cosf(yawRad);
float sinYaw = sinf(yawRad);
float cosPitch = cosf(pitchRad);
float sinPitch = sinf(pitchRad);
float forwardX = -sinYaw * cosPitch;
float forwardY = -sinPitch;
float forwardZ = cosYaw * cosPitch;
float worldUpX = 0.0f;
float worldUpY = 1.0f;
float worldUpZ = 0.0f;
float rightX = forwardY * worldUpZ - forwardZ * worldUpY;
float rightY = forwardZ * worldUpX - forwardX * worldUpZ;
float rightZ = forwardX * worldUpY - forwardY * worldUpX;
rightX = -rightX;
rightY = -rightY;
rightZ = -rightZ;
float rightLen = sqrtf(rightX * rightX + rightY * rightY + rightZ * rightZ);
if (rightLen > 0.0001f) {
rightX /= rightLen;
rightY /= rightLen;
rightZ /= rightLen;
} else {
rightX = 1.0f;
rightY = 0.0f;
rightZ = 0.0f;
}
float upX = forwardY * rightZ - forwardZ * rightY;
float upY = forwardZ * rightX - forwardX * rightZ;
float upZ = forwardX * rightY - forwardY * rightX;
float upLen = sqrtf(upX * upX + upY * upY + upZ * upZ);
if (upLen > 0.0001f) {
upX /= upLen;
upY /= upLen;
upZ /= upLen;
} else {
upX = 0.0f;
upY = 1.0f;
upZ = 0.0f;
}
modelView[0] = rightX;
modelView[1] = rightY;
modelView[2] = rightZ;
modelView[3] = 0.0f;
modelView[4] = upX;
modelView[5] = upY;
modelView[6] = upZ;
modelView[7] = 0.0f;
modelView[8] = -forwardX;
modelView[9] = -forwardY;
modelView[10] = -forwardZ;
modelView[11] = 0.0f;
modelView[12] = -(camPos.x * rightX + camPos.y * rightY + camPos.z * rightZ);
modelView[13] = -(camPos.x * upX + camPos.y * upY + camPos.z * upZ);
modelView[14] = -(camPos.x * (-forwardX) + camPos.y * (-forwardY) + camPos.z * (-forwardZ));
modelView[15] = 1.0f;
float fov = 70.0f;
if (viewport[2] <= 0 || viewport[3] <= 0)
{
for (int i = 0; i < 16; i++)
projection = (i % 5 == 0) ? 1.0f : 0.0f;
return;
}
float aspect = viewport[2] / viewport[3];
float nearPlane = 0.1f;
float farPlane = 1000.0f;
float f = 1.0f / tanf(fov * 0.5f * 3.14159f / 180.0f);
for (int i = 0; i < 16; i++)
projection = 0.0f;
projection[0] = f / aspect;
projection[5] = f;
projection[10] = (farPlane + nearPlane) / (nearPlane - farPlane);
projection[11] = -1.0f;
projection[14] = (2.0f * farPlane * nearPlane) / (nearPlane - farPlane);
}
}