This project adds support for Dear ImGUI in Defold. Dear ImGUI is described as a "Bloat-free Graphical User interface for C++ with minimal dependencies". It is perfect for quickly creating a debug interface or for creation of in-game tools and settings.
Projects such as cimgui offers Dear ImGUI bindings for a number of different languages, including Lua. It could be used to generate the bindings for this extension, BUT I'm doing this as a way to learn more about the Dear ImGUI API and as such it makes more sense for me to write the bindings by hand.
- The project currently only has bindings for a small subset of the Dear ImGUI API.
- More bindings are added as I need them. Pull requests are accepted!
- The project is not cross-platform - See below for list of supported platforms
- The current version uses the
imgui_impl_opengl3.cpp
- The current version uses the
The current state of platform support:
- macOS - supported
- Linux - supported
- Windows - supported
- Android - supported
- iOS - supported
- HTML5 - supported
Refer to example/example.script to learn how to use the extension. Also check the bindings in LuaInit()
in extension_imgui.cpp
.
You need to update the input state in Dear ImGUI each frame to accurately reflect user input:
imgui.set_key_down(key, pressed)
- Set the pressed state of a key. The key must be one of theimgui.KEY_
constantsimgui.set_key_modifier_super(pressed)
imgui.set_key_modifier_alt(pressed)
imgui.set_key_modifier_ctrl(pressed)
imgui.set_key_modifier_shift(pressed)
imgui.add_input_character(text)
- Add keyboard inputimgui.set_mouse_input(x, y, left, right, middle, wheel)
- Set mouse state (position, buttons and wheel)
You can add the imgui/imgui.script
to a game object and let that handle input for you (also make sure to use imgui/bindings/imgui.input_bindings).
You need to let Dear ImGUI know of any changes to the window size by calling imgui.set_display_size(w, h)
when the screen size changes.