こんばんわ、Pocolです。
ImGui使っていると、なんかみんな同じ見た目になってしまって面白くないなーと思いました。
そこで,聖剣伝説風のリングメニューを作ってみました。
ソースコードはGitHubにあげています。
https://github.com/ProjectAsura/ImRing
使い方はいたって簡単です。
メニュー項目は第1引数にラベル名,第2引数にImTextureID型のアイコン画像を指定してください。
実装例は次のように追加します。
ImRingItem menus[] = {
{"Menu1", MenuIcon1},
{"Menu2", MenuIcon2},
{"Menu3", ImTexureID_Invalid},
};
アイコン画像がない場合は,ラベル名の1文字目をアイコン代わりに描画します。
アニメーション更新のため,毎フレームImGuiRingMenu::Update()と,ImGuiRingMenu::Draw()を呼び出してください.
// アニメーションを更新.
menu.Update(deltaSeconds);
// 描画処理.
if (menu.Draw(selectedItemIndex, menus, _countof(menus)))
{
// ここで,選択された項目に応じた処理を行う.
...
}
キーを操作を変更したい場合は,ImGuiRingMenu::ConfigのKeyMenuStartやKeyXXXという値を使用したキーのImGuiKey列挙体の値に変更してください。
…というわけで、自作したリングメニューの紹介でした。
