2
0

main.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*******************************************************************************************
  2. *
  3. * raylib-extras [ImGui] example - asset browser
  4. *
  5. * This is a more complex ImGui Integration
  6. * It shows how to build windows on top of 2d and 3d views using a render texture
  7. *
  8. * Copyright (c) 2024 Jeffery Myers
  9. *
  10. ********************************************************************************************/
  11. #include "raylib.h"
  12. #include "raymath.h"
  13. #include "imgui.h"
  14. #include "rlImGui.h"
  15. #include "rlImGuiColors.h"
  16. #include "extras/FA6FreeSolidFontData.h"
  17. #include "asset_browser.h"
  18. #include <limits>
  19. ImFont* IconFont = nullptr;
  20. int main(int argc, char* argv[])
  21. {
  22. // Initialization
  23. //--------------------------------------------------------------------------------------
  24. int screenWidth = 1900;
  25. int screenHeight = 900;
  26. SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT);
  27. InitWindow(screenWidth, screenHeight, "raylib-Extras [ImGui] example - Asset browser");
  28. SetTargetFPS(144);
  29. rlImGuiBeginInitImGui();
  30. ImGui::StyleColorsDark();
  31. static const ImWchar icons_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
  32. ImFontConfig icons_config;
  33. icons_config.MergeMode = true;
  34. icons_config.PixelSnapH = true;
  35. icons_config.FontDataOwnedByAtlas = false;
  36. icons_config.GlyphMaxAdvanceX = std::numeric_limits<float>::max();
  37. icons_config.RasterizerMultiply = 1.0f;
  38. icons_config.OversampleH = 2;
  39. icons_config.OversampleV = 1;
  40. icons_config.GlyphRanges = icons_ranges;
  41. ImGuiIO& io = ImGui::GetIO();
  42. io.Fonts->AddFontFromMemoryCompressedTTF((void*)fa_solid_900_compressed_data, fa_solid_900_compressed_size, 12, &icons_config, icons_ranges);
  43. icons_config.MergeMode = false;
  44. IconFont = io.Fonts->AddFontFromMemoryCompressedTTF((void*)fa_solid_900_compressed_data, fa_solid_900_compressed_size, 72, &icons_config, icons_ranges);
  45. rlImGuiEndInitImGui();
  46. AssetBrowserPanel assetBrowser;
  47. // Main game loop
  48. while (!WindowShouldClose()) // Detect window close button or ESC key
  49. {
  50. BeginDrawing();
  51. ClearBackground(DARKGRAY);
  52. rlImGuiBegin();
  53. ImGui::SetNextWindowPos(ImVec2(0, 0));
  54. ImGui::SetNextWindowSize(ImVec2(float(GetScreenWidth()), float(GetScreenHeight())));
  55. if (ImGui::Begin("Frame", 0, ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoSavedSettings))
  56. {
  57. assetBrowser.Show();
  58. }
  59. ImGui::End();
  60. rlImGuiEnd();
  61. EndDrawing();
  62. //----------------------------------------------------------------------------------
  63. }
  64. rlImGuiShutdown();
  65. // De-Initialization
  66. //--------------------------------------------------------------------------------------
  67. CloseWindow(); // Close window and OpenGL context
  68. //--------------------------------------------------------------------------------------
  69. return 0;
  70. }