#pragma once #include "Runtime/GCNTypes.hpp" #include "Runtime/Streams/CInputStream.hpp" #include "Runtime/Streams/COutputStream.hpp" #include "imgui.h" #include #include #include #include #include namespace metaforce { class ImGuiControllerConfig { struct Button { s32 button = -1; // the SDL button this entry corresponds to u32 uvX = 0; // Offset if icon image in atlas from left (in pixels) u32 uvY = 0; // Offset if icon image in atlas from top (in pixels) u32 width = 32; // Width of button image (in pixels) u32 height = 32; // Height of button image (in pixels) float offX = 0.f; // Offset from left of config window float offY = 0.f; // Offset from top of config window Button() = default; explicit Button(CInputStream& in); void PutTo(COutputStream& in) const; }; struct ControllerAtlas { std::string name; std::vector> vidPids; std::string atlasFile; // Path to atlas relative to controller definition std::vector