Compare commits

..

No commits in common. "ca427b043fd696a8710c652b3e65c048f6835c88" and "dbd23a30fc06009bb4301d9a47d8d7c22bca574a" have entirely different histories.

10 changed files with 304 additions and 1685 deletions

View File

@ -19,7 +19,7 @@ DockId=0x00000002,0
Pos=374,27
Size=1212,770
Collapsed=0
DockId=0x0000001F,0
DockId=0x00000017,0
[Window][Performance]
Pos=8,774
@ -49,7 +49,7 @@ DockId=0x0000000B,0
Pos=374,27
Size=1202,849
Collapsed=0
DockId=0x0000001F,0
DockId=0x00000017,0
[Window][Lua Text Editor]
Pos=8,481
@ -68,26 +68,26 @@ Size=1920,1177
Collapsed=0
[Window][Inspector##InspectorWindow]
Pos=1492,30
Size=420,1139
Pos=1536,27
Size=376,1142
Collapsed=0
DockId=0x00000016,0
[Window][Editor##EditorWindow]
Pos=332,30
Size=1158,430
Pos=332,27
Size=1202,776
Collapsed=0
DockId=0x0000001F,0
DockId=0x00000017,0
[Window][Performance##performance]
Pos=8,746
Size=322,423
Pos=8,761
Size=322,408
Collapsed=0
DockId=0x0000001C,0
[Window][Logger##logger]
Pos=332,348
Size=518,364
Pos=332,805
Size=1202,364
Collapsed=0
DockId=0x00000019,0
@ -104,8 +104,8 @@ Collapsed=0
DockId=0x0000000F,0
[Window][Scene Window##SceneWindow]
Pos=8,30
Size=322,714
Pos=8,27
Size=322,732
Collapsed=0
DockId=0x0000001B,0
@ -116,8 +116,8 @@ Collapsed=0
DockId=0x00000011,0
[Window][Profiler]
Pos=332,805
Size=1158,364
Pos=935,805
Size=599,364
Collapsed=0
DockId=0x0000001A,0
@ -127,56 +127,19 @@ Size=1202,364
Collapsed=0
DockId=0x00000019,1
[Window][Logger##logger]
Pos=332,752
Size=1158,417
Collapsed=0
DockId=0x0000001E,0
[Window][ Logger##logger]
Pos=332,828
Size=1187,341
Collapsed=0
DockId=0x00000020,1
[Window][ Editor##EditorWindow]
Pos=332,30
Size=1187,796
Collapsed=0
DockId=0x0000001F,0
[Window][ Inspector##InspectorWindow]
Pos=1521,30
Size=391,1139
Collapsed=0
DockId=0x00000022,0
[Window][ Profiler]
Pos=332,828
Size=1187,341
Collapsed=0
DockId=0x00000020,0
[Table][0xE9E836E4,4]
Column 0 Weight=1.2999
Column 1 Weight=1.0439
Column 2 Weight=0.6474
Column 3 Weight=1.0088
[Table][0x08173DEA,4]
Column 0 Weight=1.0000
Column 1 Weight=1.0000
Column 2 Weight=1.0000
Column 3 Weight=1.0000
[Docking][Data]
DockSpace ID=0x14621557 Window=0x3DA2F1DE Pos=8,53 Size=1904,1139 Split=X Selected=0xF7365A5A
DockNode ID=0x00000021 Parent=0x14621557 SizeRef=871,1139 Split=X
DockNode ID=0x00000013 Parent=0x00000021 SizeRef=322,1142 Split=Y Selected=0x818D04BB
DockNode ID=0x0000001B Parent=0x00000013 SizeRef=264,714 HiddenTabBar=1 Selected=0x1D5D92B6
DockNode ID=0x0000001C Parent=0x00000013 SizeRef=264,423 HiddenTabBar=1 Selected=0x818D04BB
DockNode ID=0x00000014 Parent=0x00000021 SizeRef=547,1142 Split=X
DockNode ID=0x00000015 Parent=0x00000014 SizeRef=1158,1142 Split=X
DockSpace ID=0x14621557 Window=0x3DA2F1DE Pos=8,50 Size=1904,1142 Split=X Selected=0xF7365A5A
DockNode ID=0x00000013 Parent=0x14621557 SizeRef=322,1142 Split=Y Selected=0x818D04BB
DockNode ID=0x0000001B Parent=0x00000013 SizeRef=264,456 HiddenTabBar=1 Selected=0x1D5D92B6
DockNode ID=0x0000001C Parent=0x00000013 SizeRef=264,254 HiddenTabBar=1 Selected=0x818D04BB
DockNode ID=0x00000014 Parent=0x14621557 SizeRef=1580,1142 Split=X
DockNode ID=0x00000015 Parent=0x00000014 SizeRef=1202,1142 Split=X
DockNode ID=0x00000011 Parent=0x00000015 SizeRef=265,1142 Selected=0x1D5D92B6
DockNode ID=0x00000012 Parent=0x00000015 SizeRef=1259,1142 Split=X
DockNode ID=0x00000009 Parent=0x00000012 SizeRef=364,1142 Split=Y Selected=0x3DC5AC3F
@ -190,19 +153,14 @@ DockSpace ID=0x14621557 Window=0x3DA2F1DE Pos=8,53 Size=
DockNode ID=0x00000001 Parent=0x00000008 SizeRef=1202,1142 Split=Y Selected=0xDF0EC458
DockNode ID=0x00000003 Parent=0x00000001 SizeRef=1202,849 Split=Y Selected=0xDF0EC458
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=1202,571 Split=Y Selected=0xDFF75B3F
DockNode ID=0x00000017 Parent=0x0000000D SizeRef=1202,776 Split=Y Selected=0xDFF75B3F
DockNode ID=0x0000001D Parent=0x00000017 SizeRef=518,720 Split=Y Selected=0xDFF75B3F
DockNode ID=0x0000001F Parent=0x0000001D SizeRef=518,796 CentralNode=1 Selected=0x9A7B23B9
DockNode ID=0x00000020 Parent=0x0000001D SizeRef=518,341 Selected=0x7A66B86B
DockNode ID=0x0000001E Parent=0x00000017 SizeRef=518,417 Selected=0xC74E1AEE
DockNode ID=0x00000017 Parent=0x0000000D SizeRef=1202,776 CentralNode=1 Selected=0xDFF75B3F
DockNode ID=0x00000018 Parent=0x0000000D SizeRef=1202,364 Split=X Selected=0x1C0788A1
DockNode ID=0x00000019 Parent=0x00000018 SizeRef=601,364 Selected=0x1C0788A1
DockNode ID=0x0000001A Parent=0x00000018 SizeRef=599,364 Selected=0x9B5D3198
DockNode ID=0x0000000E Parent=0x00000003 SizeRef=1202,569 Selected=0xE98146C5
DockNode ID=0x00000004 Parent=0x00000001 SizeRef=1202,291 Selected=0x9DD4E196
DockNode ID=0x00000002 Parent=0x00000008 SizeRef=334,1142 HiddenTabBar=1 Selected=0x36DC96AB
DockNode ID=0x00000016 Parent=0x00000014 SizeRef=420,1142 Selected=0x8D0E8380
DockNode ID=0x00000022 Parent=0x14621557 SizeRef=391,1139 Selected=0xD1D25642
DockNode ID=0x00000016 Parent=0x00000014 SizeRef=376,1142 HiddenTabBar=1 Selected=0x8D0E8380
DockSpace ID=0xC6145A92 Pos=8,27 Size=1904,1142 Split=X
DockNode ID=0x0000000F Parent=0xC6145A92 SizeRef=301,1142 Selected=0xA8433A03
DockNode ID=0x00000010 Parent=0xC6145A92 SizeRef=1601,1142 CentralNode=1

View File

@ -21,7 +21,6 @@
#include "Windows/LoggerWindow.h"
#include "Windows/InspectorWindow.h"
#include "Windows/SceneWindow.h"
#include "Windows/Icons.h"
#include "Windows/ProfilerWindow.h"
@ -50,8 +49,10 @@ SceneManager g_SceneManager;
std::vector<std::shared_ptr<GameObject>> g_GameObjects;
std::shared_ptr<CameraComponent> g_RuntimeCameraObject;
int g_GPU_Triangles_drawn_to_screen = 0;
GameObject *g_SelectedObject; // Pointer to the currently selected object
@ -105,43 +106,9 @@ bool MyEngine::Init(int width, int height, const std::string &title)
// Enable docking
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
#ifdef DEBUG
#ifdef DEBUG
ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_DockingEnable | ImGuiConfigFlags_ViewportsEnable;
#endif
// Path to your font files
const char *regularFontPath = "assets/fonts/Roboto-Medium.ttf"; // Replace with your font file path
const char *fontAwesomePath = "assets/fonts/fa-solid-900.ttf"; // Replace with Font Awesome font path
float fontSize = 16.0f; // Font size for both regular font and icons
// Load the regular font
ImFont *regularFont = io.Fonts->AddFontFromFileTTF(regularFontPath, fontSize);
if (!regularFont)
{
fprintf(stderr, "Failed to load regular font: %s\n", regularFontPath);
return false;
}
// Configure Font Awesome
ImFontConfig fontAwesomeConfig;
fontAwesomeConfig.MergeMode = true; // Merge into the main font
fontAwesomeConfig.PixelSnapH = true; // Snap pixels for better alignment
fontAwesomeConfig.GlyphOffset.y = 2.0f; // Adjust vertical alignment (tweak this value if needed)
// Define the glyph range for Font Awesome
static const ImWchar fontAwesomeRanges[] = {ICON_MIN_FA, ICON_MAX_FA, 0};
// Load Font Awesome and merge it into the regular font
ImFont *fontAwesomeFont = io.Fonts->AddFontFromFileTTF(fontAwesomePath, fontSize, &fontAwesomeConfig, fontAwesomeRanges);
if (!fontAwesomeFont)
{
fprintf(stderr, "Failed to load Font Awesome font: %s\n", fontAwesomePath);
return false;
}
// Build the fonts
io.Fonts->Build();
#endif
// (Optional) Multi-viewport
// io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;
@ -164,7 +131,7 @@ bool MyEngine::Init(int width, int height, const std::string &title)
m_GameRunning = false;
m_FirstTickGameRunning = true;
m_showProfiler = true;
m_showProfiler = false;
g_LoggerWindow = m_LoggerWindow.get();
@ -237,6 +204,7 @@ void MyEngine::Run()
DEBUG_PRINT("Save path: %s", savePath.c_str());
g_SceneManager.SaveScene(g_GameObjects, savePath);
ScopedTimer LUA_INIT_timer("GameObjectsScriptInit");
for (auto &Gameobject : g_GameObjects)
{
@ -273,6 +241,8 @@ void MyEngine::Run()
for (auto &Gameobject : g_GameObjects)
{
Gameobject->Update(frame_delta);
}
}
@ -290,7 +260,7 @@ void MyEngine::Run()
m_PerformanceWindow->Show(m_Fps, m_Ms); // FPS & ms
m_LoggerWindow->Show(); // Logs
m_SceneWindow->Show();
// m_luaEditor->Show();
//m_luaEditor->Show();
if (m_showProfiler)
{

View File

@ -49,7 +49,7 @@ private:
bool m_GameRunning = false;
bool m_FirstTickGameRunning = true;
bool m_showProfiler = true;
bool m_showProfiler = false;
// Windows
std::unique_ptr<RenderWindow> m_RenderWindow;

View File

@ -2,7 +2,6 @@
#include <iostream>
#include <fstream>
#include <stdexcept>
#include <sstream>
#include <cstring>
#include <GL/glew.h>
@ -72,9 +71,8 @@ AssetManager::AssetVariant AssetManager::loadAssetFromDisk(AssetType type, const
}
else
{
g_LoggerWindow->AddLog("Failed to load Shader", ImVec4(1.0f, 0.01f, 0.01f, 1.0f));
throw std::runtime_error("Failed to load shader: " + path);
}
break;
}
case AssetType::MODEL:
{
@ -86,15 +84,12 @@ AssetManager::AssetVariant AssetManager::loadAssetFromDisk(AssetType type, const
}
else
{
g_LoggerWindow->AddLog("Failed to load model: %s", ImVec4(1.0f, 0.01f, 0.01f, 1.0f), path.c_str());
throw std::runtime_error("Failed to load model: " + path);
}
break;
}
default:
g_LoggerWindow->AddLog("Unknown Asset Type", ImVec4(1.0f, 0.01f, 0.01f, 1.0f));
break;
throw std::invalid_argument("Unknown AssetType");
}
throw std::runtime_error("Failed to load Asset: " + path);
}
std::string AssetManager::generateKey(AssetType type, const std::string &path)

View File

@ -213,9 +213,6 @@ public:
//}
// 3) Not loaded yet
try
{
AssetVariant assetData = loadAssetFromDisk(type, path);
if (assetData.valueless_by_exception())
@ -223,15 +220,12 @@ public:
DEBUG_PRINT("[AssetManager] Failed to load asset: %s", path.c_str());
return nullptr; // For smart pointers, return nullptr on failure
}
m_AssetMap[key] = assetData;
return std::get<std::shared_ptr<T>>(assetData);
}
catch (const std::exception &e)
{
std::cout << "Exception caught: " << e.what() << '\n';
}
return nullptr;
// 4) Store in cache
m_AssetMap[key] = assetData;
// 5) Return the loaded asset
return std::get<std::shared_ptr<T>>(assetData);
}
void DebugAssetMap();

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,6 @@
#include <vector>
#include "Icons.h"
extern std::vector<GameObject> g_GameObjects;
extern GameObject *g_SelectedObject; // Pointer to the currently selected object
extern std::shared_ptr<CameraComponent> g_RuntimeCameraObject;
@ -23,7 +21,7 @@ void InspectorWindow::Show()
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6, 4));
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10, 10));
if (ImGui::Begin(ICON_FA_MAGNIFYING_GLASS " Inspector##InspectorWindow"))
if (ImGui::Begin("Inspector##InspectorWindow"))
{
// Title label (white text)
if (g_SelectedObject)
@ -35,8 +33,6 @@ void InspectorWindow::Show()
return;
}
ImVec2 size = ImGui::GetContentRegionAvail();
// Display object name and component count
ImGui::Text("Editing Object: %s", g_SelectedObject->name.c_str());
ImGui::Text("Components: %d", g_SelectedObject->GetComponentCount());
@ -90,7 +86,7 @@ void InspectorWindow::Show()
// Create a Combo Box for component selection
ImGui::Combo(" ##ComponentCombo", &selectedComponent, componentOptions, componentCount);
ImGui::Combo("##ComponentCombo", &selectedComponent, componentOptions, componentCount);
// Add Button to add the selected component
if (ImGui::Button("Add"))
@ -175,12 +171,13 @@ void InspectorWindow::Show()
{
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
bool transformOpen = ImGui::CollapsingHeader(ICON_FA_CIRCLE_NODES " Transform##Main", ImGuiTreeNodeFlags_DefaultOpen);
bool transformOpen = ImGui::CollapsingHeader("Transform##Main", ImGuiTreeNodeFlags_DefaultOpen);
ImGui::PopStyleColor();
// Transform* transform = &g_SelectedObject->transform;
// printf("%p\n", &transform);
if (transformOpen)
{
if (ImGui::IsItemHovered())
{
ImGui::BeginTooltip();
@ -188,62 +185,196 @@ void InspectorWindow::Show()
ImGui::EndTooltip();
}
const char *axisNames[3] = {"X", "Y", "Z"};
// -----------------------------------
// Position
// -----------------------------------
ImGui::TextUnformatted("Position");
ImGui::Spacing();
{
// We'll assign colors for X, Y, Z buttons
// (normal, hovered, active)
static const ImVec4 colX = ImVec4(1.0f, 0.4f, 0.4f, 1.0f);
static const ImVec4 colY = ImVec4(0.4f, 1.0f, 0.4f, 1.0f);
static const ImVec4 colZ = ImVec4(0.4f, 0.4f, 1.0f, 1.0f);
static const ImVec4 colXHover = ImVec4(1.0f, 0.6f, 0.6f, 1.0f);
static const ImVec4 colYHover = ImVec4(0.6f, 1.0f, 0.6f, 1.0f);
static const ImVec4 colZHover = ImVec4(0.6f, 0.6f, 1.0f, 1.0f);
static const ImVec4 colXActive = ImVec4(1.0f, 0.2f, 0.2f, 1.0f);
static const ImVec4 colY = ImVec4(0.4f, 1.0f, 0.4f, 1.0f);
static const ImVec4 colYHover = ImVec4(0.6f, 1.0f, 0.6f, 1.0f);
static const ImVec4 colYActive = ImVec4(0.2f, 1.0f, 0.2f, 1.0f);
static const ImVec4 colZ = ImVec4(0.4f, 0.4f, 1.0f, 1.0f);
static const ImVec4 colZHover = ImVec4(0.6f, 0.6f, 1.0f, 1.0f);
static const ImVec4 colZActive = ImVec4(0.2f, 0.2f, 1.0f, 1.0f);
int ittr = 0;
auto drawTransformRow = [&](const char *label, float *values)
{
ImGui::TextUnformatted(label);
ImGui::SameLine(90); // Align labels to a fixed width
ImVec4 colors[3][3] = {
{colX, colXHover, colXActive},
{colY, colYHover, colYActive},
{colZ, colZHover, colZActive}};
const char *axisNames[3] = {"X", "Y", "Z"};
// We'll reference transform.position here
float *pos = glm::value_ptr(transform->position);
ImGui::PushID("PositionRow");
for (int i = 0; i < 3; i++)
{
ImGui::PushStyleColor(ImGuiCol_Button, colors[i][0]);
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, colors[i][1]);
ImGui::PushStyleColor(ImGuiCol_ButtonActive, colors[i][2]);
std::string name = std::string(axisNames[i]) + "##" + std::to_string(ittr);
if (ImGui::Button(name.c_str(), ImVec2(20, 0)))
// Determine color set
ImVec4 col, colH, colA;
if (i == 0)
{
// No action on click
col = colX;
colH = colXHover;
colA = colXActive;
}
else if (i == 1)
{
col = colY;
colH = colYHover;
colA = colYActive;
}
else
{
col = colZ;
colH = colZHover;
colA = colZActive;
}
// Push color style for button
ImGui::PushStyleColor(ImGuiCol_Button, col);
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, colH);
ImGui::PushStyleColor(ImGuiCol_ButtonActive, colA);
// Small button with the axis name
if (ImGui::Button(axisNames[i], ImVec2(20, 0)))
{
// No action on click, but we have a box with color
}
ImGui::PopStyleColor(3);
ImGui::SameLine();
ImGui::SetNextItemWidth(60.0f);
ImGui::DragFloat((std::string("##Pos") + axisNames[i]).c_str(), &pos[i], 0.1f);
if (i < 2)
ImGui::SameLine(0, 15);
}
ImGui::PopID();
}
ImGui::Spacing();
ImGui::Separator();
// -----------------------------------
// Rotation
// -----------------------------------
ImGui::TextUnformatted("Rotation");
ImGui::Spacing();
{
// Same approach, but referencing transform.rotation
const char *axisNames[3] = {"X", "Y", "Z"};
float *rot = glm::value_ptr(transform->rotation);
// We can reuse the same color sets
ImGui::PushID("RotationRow");
for (int i = 0; i < 3; i++)
{
// Decide color sets for X, Y, Z
ImVec4 col, colH, colA;
if (i == 0)
{
col = ImVec4(1.0f, 0.4f, 0.4f, 1.0f);
colH = ImVec4(1.0f, 0.6f, 0.6f, 1.0f);
colA = ImVec4(1.0f, 0.2f, 0.2f, 1.0f);
}
else if (i == 1)
{
col = ImVec4(0.4f, 1.0f, 0.4f, 1.0f);
colH = ImVec4(0.6f, 1.0f, 0.6f, 1.0f);
colA = ImVec4(0.2f, 1.0f, 0.2f, 1.0f);
}
else
{
col = ImVec4(0.4f, 0.4f, 1.0f, 1.0f);
colH = ImVec4(0.6f, 0.6f, 1.0f, 1.0f);
colA = ImVec4(0.2f, 0.2f, 1.0f, 1.0f);
}
ImGui::PushStyleColor(ImGuiCol_Button, col);
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, colH);
ImGui::PushStyleColor(ImGuiCol_ButtonActive, colA);
if (ImGui::Button(axisNames[i], ImVec2(20, 0)))
{
// No action
}
ImGui::PopStyleColor(3);
ImGui::SameLine();
ImGui::SetNextItemWidth(60.0f); // Adjust field width to be more compact
ImGui::DragFloat((std::string("##") + label + axisNames[i]).c_str(), &values[i], 0.1f);
ImGui::SetNextItemWidth(60.0f);
ImGui::DragFloat((std::string("##Rot") + axisNames[i]).c_str(), &rot[i], 0.1f);
if (i < 2)
ImGui::SameLine(0, 5); // Reduce spacing between fields
ImGui::SameLine(0, 15);
}
ImGui::PopID();
}
};
// Position Row
drawTransformRow("Position", glm::value_ptr(transform->position));
ittr += 1;
ImGui::Spacing();
ImGui::Separator();
// Rotation Row
drawTransformRow("Rotation", glm::value_ptr(transform->rotation));
ittr += 1;
// -----------------------------------
// Scale
// -----------------------------------
ImGui::TextUnformatted("Scale");
ImGui::Spacing();
// Scale Row
drawTransformRow("Scale", glm::value_ptr(transform->scale));
{
const char *axisNames[3] = {"X", "Y", "Z"};
float *scl = glm::value_ptr(transform->scale);
ImGui::PushID("ScaleRow");
for (int i = 0; i < 3; i++)
{
// same color approach
ImVec4 col, colH, colA;
if (i == 0)
{
col = ImVec4(1.0f, 0.4f, 0.4f, 1.0f);
colH = ImVec4(1.0f, 0.6f, 0.6f, 1.0f);
colA = ImVec4(1.0f, 0.2f, 0.2f, 1.0f);
}
else if (i == 1)
{
col = ImVec4(0.4f, 1.0f, 0.4f, 1.0f);
colH = ImVec4(0.6f, 1.0f, 0.6f, 1.0f);
colA = ImVec4(0.2f, 1.0f, 0.2f, 1.0f);
}
else
{
col = ImVec4(0.4f, 0.4f, 1.0f, 1.0f);
colH = ImVec4(0.6f, 0.6f, 1.0f, 1.0f);
colA = ImVec4(0.2f, 0.2f, 1.0f, 1.0f);
}
ImGui::PushStyleColor(ImGuiCol_Button, col);
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, colH);
ImGui::PushStyleColor(ImGuiCol_ButtonActive, colA);
if (ImGui::Button(axisNames[i], ImVec2(20, 0)))
{
// No action
}
ImGui::PopStyleColor(3);
ImGui::SameLine();
ImGui::SetNextItemWidth(60.0f);
ImGui::DragFloat((std::string("##Scl") + axisNames[i]).c_str(), &scl[i], 0.1f);
if (i < 2)
ImGui::SameLine(0, 15);
}
ImGui::PopID();
}
ImGui::Spacing();
ImGui::Separator();
}
}
@ -253,7 +384,7 @@ void InspectorWindow::Show()
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
// Create a collapsing header for the Camera component
bool cameraOpen = ImGui::CollapsingHeader(ICON_FA_CAMERA "Camera##CamerInspector", ImGuiTreeNodeFlags_DefaultOpen);
bool cameraOpen = ImGui::CollapsingHeader("Camera##CamerInspector", ImGuiTreeNodeFlags_DefaultOpen);
ImGui::PopStyleColor(); // Revert text color
if (cameraOpen)
@ -410,7 +541,7 @@ void InspectorWindow::Show()
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
// Create a collapsing header for the MeshComponent
bool meshOpen = ImGui::CollapsingHeader(ICON_FA_CUBE " Mesh##Main", ImGuiTreeNodeFlags_DefaultOpen);
bool meshOpen = ImGui::CollapsingHeader("Mesh##Main", ImGuiTreeNodeFlags_DefaultOpen);
ImGui::PopStyleColor();
if (meshOpen)
@ -430,28 +561,21 @@ void InspectorWindow::Show()
}
// --- Submeshes Information ---
ImGui::Indent();
if (ImGui::CollapsingHeader("Submeshes", ImGuiTreeNodeFlags_None))
{
ImGui::Separator();
ImGui::Text("Submeshes:");
// Check if the model is loaded
if (mesh)
{
// Iterate through each Submesh
ImGui::Indent();
for (size_t sm = 0; sm < mesh->submeshes.size(); ++sm)
{
const Submesh &submesh = mesh->submeshes[sm];
std::string header = "Submesh " + std::to_string(sm + 1) + "##Submesh" + std::to_string(sm);
// Create a collapsing header for each Submesh
if (ImGui::CollapsingHeader(header.c_str(), ImGuiTreeNodeFlags_None))
if (ImGui::CollapsingHeader(header.c_str(), ImGuiTreeNodeFlags_DefaultOpen))
{
ImGui::Indent();
size = ImGui::GetContentRegionAvail();
// --- Submesh VAO (Read-Only) ---
ImGui::Text("VAO: %d", static_cast<int>(submesh.vao));
@ -484,7 +608,8 @@ void InspectorWindow::Show()
if (texture.id != 0)
{
// Adjust the size as needed
ImGui::Image(static_cast<ImTextureID>(texture.id), ImVec2(size.x, size.x), ImVec2(0, 0), ImVec2(1, 1));
ImVec2 imageSize = ImVec2(100, 100); // Example size
ImGui::Image(static_cast<ImTextureID>(texture.id), imageSize, ImVec2(0, 0), ImVec2(1, 1));
}
else
{
@ -494,26 +619,23 @@ void InspectorWindow::Show()
ImGui::Separator();
}
}
ImGui::Unindent();
ImGui::Separator();
}
}
ImGui::Unindent();
}
else
{
ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "No model loaded.");
}
}
ImGui::Unindent();
}
ImGui::Separator();
}
if (script && g_SelectedObject)
{
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
bool scriptOpen = ImGui::CollapsingHeader(ICON_FA_SCROLL " Script##Main", ImGuiTreeNodeFlags_DefaultOpen);
bool scriptOpen = ImGui::CollapsingHeader("Script##Main", ImGuiTreeNodeFlags_DefaultOpen);
ImGui::PopStyleColor();
if (scriptOpen)

View File

@ -4,7 +4,6 @@
#include "imgui.h"
#include <cstdarg>
#include <cstdio>
#include "Icons.h"
// Helper function to format strings
static std::string FormatString(const char* fmt, va_list args) {
@ -34,7 +33,7 @@ void LoggerWindow::AddLog(const char* fmt, std::optional<ImVec4> color, ...) {
}
void LoggerWindow::Show() {
ImGui::Begin(ICON_FA_TERMINAL " Logger##logger");
ImGui::Begin("Logger##logger");
if (ImGui::Button("Clear")) {
m_Logs.clear();

View File

@ -3,7 +3,6 @@
#include <algorithm>
#include <string>
#include <iostream> // For debug statements
#include "Icons.h"
// Constructor
ProfilerWindow::ProfilerWindow()
@ -99,7 +98,7 @@ void ProfilerWindow::Show()
}
// Begin ImGui window with improved styling
ImGui::Begin(ICON_FA_GAUGE " Profiler", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_HorizontalScrollbar);
ImGui::Begin("Profiler", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_HorizontalScrollbar);
const auto &data = Profiler::Get().GetLastFrameData();

View File

@ -24,8 +24,6 @@ extern std::vector<std::shared_ptr<GameObject>> g_GameObjects;
#include "Engine/AssetManager.h"
#include "Rendering/Shader.h"
#include "Icons.h"
// Extern reference to our global (or extern) asset manager
extern AssetManager g_AssetManager;
@ -252,7 +250,7 @@ bool PlayPauseButton(const char *label, bool *isPlaying, ImVec2 Size)
void RenderWindow::Show(bool *GameRunning)
{
ImGui::Begin(ICON_FA_GAMEPAD " Editor##EditorWindow");
ImGui::Begin("Editor##EditorWindow");
if (!m_Initialized)
{