cinder / Cinder

Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.
http://libcinder.org
Other
5.28k stars 939 forks source link

Dear ImGui Updates: v1.89.8 Release / Docking Branch #2311

Open richardeakin opened 10 months ago

richardeakin commented 10 months ago

This updates Dear ImGui sources to v1.89.8, docking branch. Also hoping to get a consensus on what branch people would like to see in the master repo. Personally, I think the new ImGui Tables API is a must for data debugging, although that does live in the official release branch. I know that on various client projects, we've switched to using docking as it allows for a cleaner user-facing GUI, and although the API appears stable who knows when it'll make it into the official release branch.

Important code changes include:

I had to make minor upates to my own GUI code in various places (ListBox(), GetContentAvailWidth() -> ImGui::GetContentRegionAvail().x)

Last thing to note: we're discussing moving Dear ImGui to a submodule for a future release (likely when v2.0 lands), let us know if any feedback on that as well.

Needed:

richardeakin commented 10 months ago

I just pushed an additional update that fixes IM_ASSERTs called from within imgui.cpp, imgui_widgets.cpp, etc, that don't include CinderImGui.h first. Tested and breakipoints now get correctly routed to CI_BREAKPOINT(), and you can use things like LoggerBreakpoint() now to hunt down a missing ImGui::End(), for example.

This is because if the user doesn't define IMGUI_USER_CONFIG, CinderImGui.h will include its own config header called "cinder/CinderImGuiConfig.h". But imgui.h is written so that if IMGUI_USER_CONFIG isn't defined, then it will #include "imconfig.h", here. Two other ways we could fix this:

I think this is a decent middleground, where all you need to do after updating, is to copy that #include redirect so that imgui.h and everything else is looking at CinderImGuiConfig.h, which is versioned in the cinder repo.