Object inspector window

This commit is contained in:
CatChow0 2024-03-26 13:01:33 +01:00
parent a2dd35513e
commit c153c88032
7 changed files with 68 additions and 1 deletions

View File

@ -164,6 +164,7 @@ bool SystemClass::Frame()
m_imguiManager->WidgetButton();
m_imguiManager->WidgetFPS();
m_imguiManager->WidgetAddObject(m_Application);
m_imguiManager->WidgetObjectWindow(m_Application);
ImGui::End();

View File

@ -44,6 +44,7 @@ public:
void AddCube();
int GetCubeCount() const { return m_cubes.size(); };
std::vector<Object*> GetCubes() const { return m_cubes; };
private:
bool Render(float);

View File

@ -3,6 +3,10 @@ Pos=60,60
Size=400,400
[Window][Khaotic Engine]
Pos=54,81
Pos=1068,19
Size=694,367
[Window][Objects]
Pos=74,113
Size=492,353

View File

@ -1,5 +1,6 @@
#include "imguiManager.h"
#include "applicationclass.h"
#include <string>
imguiManager::imguiManager()
{
@ -75,3 +76,25 @@ void imguiManager::WidgetAddObject(ApplicationClass* app)
ImGui::Text("Number of cubes: %d", app->GetCubeCount());
}
}
void imguiManager::WidgetObjectWindow(ApplicationClass* app)
{
ImGui::Begin("Objects");
int index = 0;
for (auto object : app->GetCubes())
{
std::string headerName = "Object " + std::to_string(index);
if (ImGui::CollapsingHeader(headerName.c_str()))
{
XMVECTOR position = object->GetPosition();
XMVECTOR rotation = object->GetRotation();
XMVECTOR scale = object->GetScale();
ImGui::Text("Position: %.2f %.2f %.2f", XMVectorGetX(position), XMVectorGetY(position), XMVectorGetZ(position));
ImGui::Text("Rotation: %.2f %.2f %.2f", XMVectorGetX(rotation), XMVectorGetY(rotation), XMVectorGetZ(rotation));
ImGui::Text("Scale: %.2f %.2f %.2f", XMVectorGetX(scale), XMVectorGetY(scale), XMVectorGetZ(scale));
}
index++;
}
ImGui::End();
}

View File

@ -26,6 +26,8 @@ public:
void WidgetFPS();
void WidgetAddObject(ApplicationClass* app);
void WidgetObjectWindow(ApplicationClass* app);
private:
ImGuiIO* io;
};

View File

@ -61,4 +61,32 @@ XMMATRIX Object::GetSRMatrix()
XMMATRIX Object::GetWorldMatrix()
{
return m_worldMatrix;
}
XMVECTOR Object::GetPosition()
{
XMFLOAT4X4 matrix;
XMStoreFloat4x4(&matrix, m_worldMatrix);
return XMVectorSet(matrix._41, matrix._42, matrix._43, 0.0f);
}
XMVECTOR Object::GetRotation()
{
XMFLOAT4X4 matrix;
XMStoreFloat4x4(&matrix, m_rotateMatrix);
float rotationX = atan2f(matrix._32, matrix._33);
float rotationY = atan2f(-matrix._31, sqrtf(matrix._32 * matrix._32 + matrix._33 * matrix._33));
float rotationZ = atan2f(matrix._21, matrix._11);
return XMVectorSet(rotationX, rotationY, rotationZ, 0.0f);
}
XMVECTOR Object::GetScale()
{
XMFLOAT4X4 matrix;
XMStoreFloat4x4(&matrix, m_scaleMatrix);
float scaleX = XMVectorGetX(XMVector3Length(XMVectorSet(matrix._11, matrix._12, matrix._13, 0.0f)));
float scaleY = XMVectorGetX(XMVector3Length(XMVectorSet(matrix._21, matrix._22, matrix._23, 0.0f)));
float scaleZ = XMVectorGetX(XMVector3Length(XMVectorSet(matrix._31, matrix._32, matrix._33, 0.0f)));
return XMVectorSet(scaleX, scaleY, scaleZ, 0.0f);
}

View File

@ -13,12 +13,20 @@ public:
void SetSRMatrix(XMMATRIX srMatrix);
void SetWorldMatrix(XMMATRIX worldMatrix);
void SetPosition(XMVECTOR position);
void SetRotation(XMVECTOR rotation);
void SetScale(XMVECTOR scale);
XMMATRIX GetScaleMatrix();
XMMATRIX GetRotateMatrix();
XMMATRIX GetTranslateMatrix();
XMMATRIX GetSRMatrix();
XMMATRIX GetWorldMatrix();
XMVECTOR GetPosition();
XMVECTOR GetRotation();
XMVECTOR GetScale();
private:
XMMATRIX m_scaleMatrix;
XMMATRIX m_rotateMatrix;