Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float D3DXVec3Dot(Vector a, Vector b)
- {
- return (a.x * b.x +
- a.y * b.y +
- a.z * b.z);
- }
- D3DMATRIX D3DMatrixTranspose(D3DMATRIX in) {
- D3DMATRIX out;
- out._11 = in._11;
- out._21 = in._12;
- out._31 = in._13;
- out._41 = in._14;
- out._12 = in._21;
- out._22 = in._22;
- out._32 = in._23;
- out._42 = in._24;
- out._13 = in._31;
- out._23 = in._32;
- out._33 = in._33;
- out._43 = in._34;
- out._14 = in._41;
- out._24 = in._42;
- out._34 = in._43;
- out._44 = in._44;
- return out;
- }
- void PrintMatrix(D3DMATRIX m) {
- std::cout << "{" << m._11 << ", " << m._12 << ", " << m._13 << ", " << m._14 << "}\n";
- std::cout << "{" << m._21 << ", " << m._22 << ", " << m._23 << ", " << m._24 << "}\n";
- std::cout << "{" << m._31 << ", " << m._32 << ", " << m._33 << ", " << m._34 << "}\n";
- std::cout << "{" << m._41 << ", " << m._42 << ", " << m._43 << ", " << m._44 << "}\n";
- }
- bool WorldToScreen(Vector _Enemy, Vector* _Screen, ImVec2 windowSize)
- {
- _Screen = new Vector(0, 0, 0);
- std::cout << "windowSize: " << windowSize.x << "," << windowSize.y << std::endl;
- std::cout << "Matrix:\n";
- PrintMatrix(_viewMatrix);
- D3DMATRIX temp = D3DMatrixTranspose(_viewMatrix);
- std::cout << "Transposed Matrix:\n";
- PrintMatrix(temp);
- Vector translationVector = Vector(temp._41, temp._42, temp._43);
- Vector up = Vector(temp._21, temp._22, temp._23);
- Vector right = Vector(temp._11, temp._12, temp._13);
- float w = D3DXVec3Dot(translationVector, _Enemy) + temp._44;
- if (w < 0.098f)
- return false;
- float y = D3DXVec3Dot(up, _Enemy) + temp._24;
- float x = D3DXVec3Dot(right, _Enemy) + temp._14;
- _Screen->x = (windowSize.x / 2) * (1.f + x / w);
- _Screen->y = (windowSize.y / 2) * (1.f - y / w);
- _Screen->z = w;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement