Release mode crash bug fixed (uninitialized variable....)

master
Joey Pollack 3 years ago
parent 9c37b81765
commit 3dd13b06f5

@ -12,4 +12,6 @@ echo Removing the build directory
del /s /q build del /s /q build
rd /s /q build rd /s /q build
mkdir build
:END :END

@ -14,7 +14,7 @@ namespace lunarium
{ {
Panel::Panel(std::string name, PanelDockZone dock_zone, bool isOpen, int window_flags) Panel::Panel(std::string name, PanelDockZone dock_zone, bool isOpen, int window_flags)
: mIsOpen(isOpen), mPanelName(name), mDockZone(dock_zone), mWindowFlags(window_flags), : mIsOpen(isOpen), mPanelName(name), mDockZone(dock_zone), mWindowFlags(window_flags),
mX(-1), mY(-1), mWidth(-1), mHeight(-1) mX(-1), mY(-1), mWidth(-1), mHeight(-1), mNumPushedStyles(0)
{ {
} }

@ -8,6 +8,7 @@
#include "panel_manager.h" #include "panel_manager.h"
#include "gui.h" #include "gui.h"
#include <editor/editor.h>
#include <gui/panel.h> #include <gui/panel.h>
#include <utils/logger.h> #include <utils/logger.h>
#include <dearimgui/imgui_internal.h> // To use the DockWindowXXX methods #include <dearimgui/imgui_internal.h> // To use the DockWindowXXX methods
@ -133,6 +134,7 @@ namespace lunarium
{ {
if ((*iter)->IsOpen()) if ((*iter)->IsOpen())
{ {
ImGui::SetNextWindowClass(&mWindowClass); ImGui::SetNextWindowClass(&mWindowClass);
(*iter)->OnUIRender(); (*iter)->OnUIRender();
} }
@ -162,7 +164,6 @@ namespace lunarium
mDockSpaceID = ImGui::DockSpace(ImGui::GetID(dock_name.c_str()), ImVec2(0, 0), 0, &mWindowClass); mDockSpaceID = ImGui::DockSpace(ImGui::GetID(dock_name.c_str()), ImVec2(0, 0), 0, &mWindowClass);
if (!ImGui::DockBuilderGetNode(mDockSpaceID) || mResetDockSpace) if (!ImGui::DockBuilderGetNode(mDockSpaceID) || mResetDockSpace)
{ {
Logger::Trace(GUI::LogCat, "Resetting Dockspace: %s", dock_name.c_str());
mResetDockSpace = false; mResetDockSpace = false;
ImGui::DockBuilderRemoveNode(mDockSpaceID); ImGui::DockBuilderRemoveNode(mDockSpaceID);

@ -53,7 +53,15 @@ int main(int argc, char** argv)
//std::cout << "\nEngine core successfully initialized!\n"; //std::cout << "\nEngine core successfully initialized!\n";
core.RunGameLoop(); try
{
core.RunGameLoop();
}
catch(const std::exception& e)
{
lunarium::Logger::Fatal(lunarium::LogCategory::CORE, "Unhandled exception: %s", e.what());
}
core.Shutdown(); core.Shutdown();
lunarium::Logger::GetInstance()->FreeAllListeners(); lunarium::Logger::GetInstance()->FreeAllListeners();

@ -103,13 +103,16 @@ namespace editor
int w, h; int w, h;
Core::MainWindow().GetFramebufferSize(&w, &h); Core::MainWindow().GetFramebufferSize(&w, &h);
OrthographicCamera main_cam(Vec2f { 0.0f, 0.0f }, Sizef { (float)w, (float)h }); OrthographicCamera main_cam(Vec2f { 0.0f, 0.0f }, Sizef { (float)w, (float)h });
Core::GUI().NewFrame(); Core::GUI().NewFrame();
Core::Graphics().ResetFrameStats(); Core::Graphics().ResetFrameStats();
Core::Graphics().BeginDraw(&main_cam); Core::Graphics().BeginDraw(&main_cam);
// No non-gui graphics are drawn // No non-gui graphics are drawn
Core::Graphics().EndDraw(); // Graphics end draw must happen before GUI end frame Core::Graphics().EndDraw(); // Graphics end draw must happen before GUI end frame
OnRender(&Core::Graphics()); OnRender(&Core::Graphics());
Core::GUI().EndFrame(); Core::GUI().EndFrame();
Core::MainWindow().SwapBuffers(); Core::MainWindow().SwapBuffers();
@ -117,6 +120,7 @@ namespace editor
void Editor::OnRender(lunarium::Renderer2D* g) void Editor::OnRender(lunarium::Renderer2D* g)
{ {
DoMainMenu(); DoMainMenu();
//DoStatusBar(); //DoStatusBar();
RenderWindow(); RenderWindow();
@ -170,6 +174,7 @@ namespace editor
void Editor::RenderWindow() void Editor::RenderWindow()
{ {
ImGuiViewport* Viewport = ImGui::GetWindowViewport(); ImGuiViewport* Viewport = ImGui::GetWindowViewport();
ImGui::SetNextWindowPos( Viewport->WorkPos ); ImGui::SetNextWindowPos( Viewport->WorkPos );
ImGui::SetNextWindowSize( Viewport->WorkSize ); ImGui::SetNextWindowSize( Viewport->WorkSize );
ImGui::SetNextWindowViewport( Viewport->ID ); ImGui::SetNextWindowViewport( Viewport->ID );
@ -208,6 +213,7 @@ namespace editor
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void Editor::DoMainMenu() void Editor::DoMainMenu()
{ {
//throw std::exception("TEST ERROR");
ImGui::BeginMainMenuBar(); ImGui::BeginMainMenuBar();
// File // File

@ -59,6 +59,7 @@ namespace editor
ImGui::SetCursorPosY(row_height); ImGui::SetCursorPosY(row_height);
if (ImGui::BeginChild("Directory Tree", ImVec2(wind_size.x * 0.15f, wind_size.y), true, ImGuiWindowFlags_NoCollapse)) if (ImGui::BeginChild("Directory Tree", ImVec2(wind_size.x * 0.15f, wind_size.y), true, ImGuiWindowFlags_NoCollapse))
{ {
ImGui::SetNextItemOpen(true); ImGui::SetNextItemOpen(true);
DoDirTree(mAssetDirectory); DoDirTree(mAssetDirectory);
mSyncTree = false; mSyncTree = false;
@ -69,6 +70,7 @@ namespace editor
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + wind_size.x * 0.15f); ImGui::SetCursorPosX(ImGui::GetCursorPosX() + wind_size.x * 0.15f);
// Contents // Contents
DoContentArea(wind_size); DoContentArea(wind_size);
//HandlePopupActions(); //HandlePopupActions();
@ -137,11 +139,12 @@ namespace editor
{ {
if (std::filesystem::exists(mSelectedDir)) if (std::filesystem::exists(mSelectedDir))
{ {
float yPos = ImGui::GetCursorPosY(); float yPos = ImGui::GetCursorPosY();
float xPos = ImGui::GetCursorPosX(); float xPos = ImGui::GetCursorPosX();
float left = xPos; float left = xPos;
ImGui::BeginChild("ToolBar", ImVec2(0, ImGui::GetFrameHeightWithSpacing() * 1.5f)); ImGui::BeginChild("ToolBar", ImVec2(0, ImGui::GetFrameHeightWithSpacing() * 1.5f));
ImGui::PushFont(GUI::GetInstance().GetFont(GuiFont::FONT_ROBO_SMALL)); ImGui::PushFont(GUI::GetInstance().GetFont(GuiFont::FONT_ROBO_SMALL));
ImGui::TextUnformatted(mpEditor->GetProject()->MakeRelativeToAssets(mSelectedDir, true).string().c_str()); ImGui::TextUnformatted(mpEditor->GetProject()->MakeRelativeToAssets(mSelectedDir, true).string().c_str());
@ -162,6 +165,7 @@ namespace editor
ImVec2(DataManager::mNewFolderIcon->GetWidth(), DataManager::mNewFolderIcon->GetHeight()), ImVec2(DataManager::mNewFolderIcon->GetWidth(), DataManager::mNewFolderIcon->GetHeight()),
ImVec2(0, 0), ImVec2(1, 1), 4)) ImVec2(0, 0), ImVec2(1, 1), 4))
{ {
OpenPopup(PopUp::NEW_FOLDER).LogIfFailed(Editor::LogCat); OpenPopup(PopUp::NEW_FOLDER).LogIfFailed(Editor::LogCat);
} }
@ -169,7 +173,7 @@ namespace editor
ImGui::Separator(); ImGui::Separator();
ImGui::BeginChild("Files"); ImGui::BeginChild("Files");
// List directories // List directories
for (auto const &dir_entry : std::filesystem::directory_iterator{mSelectedDir}) for (auto const &dir_entry : std::filesystem::directory_iterator{mSelectedDir})
{ {
@ -226,7 +230,7 @@ namespace editor
// TODO: CONTEXT MENU FOR ITEMS - Test Removing/Trashing // TODO: CONTEXT MENU FOR ITEMS - Test Removing/Trashing
} }
} }
DoContentContextMenu(); DoContentContextMenu();
ImGui::EndChild(); ImGui::EndChild();

@ -31,6 +31,7 @@ namespace lunarium { namespace editor
: Panel("Properties", PanelDockZone::DDZ_RIGHT, true, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar), : Panel("Properties", PanelDockZone::DDZ_RIGHT, true, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar),
mpSelectedAsset(nullptr), mpSelectedEntity(nullptr), mIsLocked(false) mpSelectedAsset(nullptr), mpSelectedEntity(nullptr), mIsLocked(false)
{ {
// ADD COMPONENT POPUP
AddPopup(Popup::ADD_COMP, "Add Component", [](Panel* p) AddPopup(Popup::ADD_COMP, "Add Component", [](Panel* p)
{ {
PropertiesView* pv = (PropertiesView*)p; PropertiesView* pv = (PropertiesView*)p;
@ -39,9 +40,15 @@ namespace lunarium { namespace editor
PRESENT_COMP_CHOICE("Tag Component", TagComponent, pv) PRESENT_COMP_CHOICE("Tag Component", TagComponent, pv)
PRESENT_COMP_CHOICE("Transform Component", TransformComponent, pv) PRESENT_COMP_CHOICE("Transform Component", TransformComponent, pv)
if ((ImGui::IsMouseClicked(ImGuiMouseButton_Left) && !ImGui::IsWindowHovered()))
{
return false;
}
return true; return true;
}).LogIfFailed(Editor::LogCat); }).LogIfFailed(Editor::LogCat);
// ADD COMP FAILED POPUP
AddPopup(Popup::ADD_COMP_FAIL, "Add Comp Fail", [] (Panel* p) AddPopup(Popup::ADD_COMP_FAIL, "Add Comp Fail", [] (Panel* p)
{ {
ImGui::Text("Can not add that component - Entity already has it"); ImGui::Text("Can not add that component - Entity already has it");

@ -72,6 +72,7 @@ namespace lunarium
Entity *pSelection = nullptr; Entity *pSelection = nullptr;
if (!mpWorld) if (!mpWorld)
{ {
ImGui::Text("No World Loaded"); ImGui::Text("No World Loaded");
return; return;
} }

@ -3,32 +3,28 @@ Pos=0,546
Size=1280,174 Size=1280,174
Collapsed=0 Collapsed=0
DockId=0x00000003,0 DockId=0x00000003,0
ClassId=0x00000001
[Window][World Tree] [Window][World Tree]
Pos=0,24 Pos=0,22
Size=204,520 Size=204,522
Collapsed=0 Collapsed=0
DockId=0x00000007,0 DockId=0x00000007,0
ClassId=0x00000001
[Window][World View] [Window][World View]
Pos=206,24 Pos=206,22
Size=816,520 Size=816,522
Collapsed=0 Collapsed=0
DockId=0x00000008,0 DockId=0x00000008,0
ClassId=0x00000001
[Window][Properties] [Window][Properties]
Pos=1024,24 Pos=1024,22
Size=256,520 Size=256,522
Collapsed=0 Collapsed=0
DockId=0x00000006,0 DockId=0x00000006,0
ClassId=0x00000001
[Window][Lunarium Editor] [Window][Lunarium Editor]
Pos=0,24 Pos=0,22
Size=1280,696 Size=1280,698
Collapsed=0 Collapsed=0
[Window][Debug##Default] [Window][Debug##Default]
@ -36,55 +32,8 @@ Pos=60,60
Size=400,400 Size=400,400
Collapsed=0 Collapsed=0
[Window][File Browser]
ViewportPos=526,598
ViewportId=0x2389D759
Size=600,400
Collapsed=0
[Window][Map Editor]
ViewportPos=622,126
ViewportId=0xDAA48CA2
Size=1056,762
Collapsed=0
[Window][Map Canvas]
ViewportPos=622,126
ViewportId=0xDAA48CA2
Pos=8,56
Size=830,698
Collapsed=0
DockId=0x0000000E,0
ClassId=0x00000045
[Window][Tile Set View]
ViewportPos=622,126
ViewportId=0xDAA48CA2
Pos=840,56
Size=208,698
Collapsed=0
DockId=0x0000000C,0
ClassId=0x00000045
[Window][DockSpaceViewport_11111111]
Size=1280,720
Collapsed=0
[Window][Dear ImGui Demo]
ViewportPos=172,128
ViewportId=0xE927CF2F
Size=550,680
Collapsed=0
[Docking][Data] [Docking][Data]
DockSpace ID=0x27CF68A1 Pos=630,182 Size=1040,698 Split=Y DockSpace ID=0x2F8DD699 Pos=240,154 Size=1280,698 Split=Y
DockNode ID=0x00000009 Parent=0x27CF68A1 SizeRef=1056,570 Split=X
DockNode ID=0x0000000B Parent=0x00000009 SizeRef=843,570 Split=X
DockNode ID=0x0000000D Parent=0x0000000B SizeRef=168,570
DockNode ID=0x0000000E Parent=0x0000000B SizeRef=673,570 CentralNode=1 Selected=0xB3CA1100
DockNode ID=0x0000000C Parent=0x00000009 SizeRef=211,570 Selected=0xB093288C
DockNode ID=0x0000000A Parent=0x27CF68A1 SizeRef=1056,190
DockSpace ID=0x2F8DD699 Window=0xBEB76114 Pos=476,90 Size=1280,696 Split=Y
DockNode ID=0x00000001 Parent=0x2F8DD699 SizeRef=1280,538 Split=X DockNode ID=0x00000001 Parent=0x2F8DD699 SizeRef=1280,538 Split=X
DockNode ID=0x00000005 Parent=0x00000001 SizeRef=1022,538 Split=X DockNode ID=0x00000005 Parent=0x00000001 SizeRef=1022,538 Split=X
DockNode ID=0x00000007 Parent=0x00000005 SizeRef=204,538 Selected=0xFD1747F8 DockNode ID=0x00000007 Parent=0x00000005 SizeRef=204,538 Selected=0xFD1747F8

Loading…
Cancel
Save