/* * Created by Brett Terpstra 6920201 on 30/10/22. * Copyright (c) 2022 Brett Terpstra. All Rights Reserved. */ #ifndef STEP_3_DEBUG_GUI_H #define STEP_3_DEBUG_GUI_H #include #include #include #include namespace Raytracing { class DebugUI { public: static void render(const std::function& generalTab); static void registerTab(const std::string& name, const std::function& tabFunc); }; class DebugObject { public: virtual void render() = 0; }; class DebugMenus { public: static void add(const std::shared_ptr& object); static void remove(const std::shared_ptr& object); static void render(); }; class DebugBVH : public DebugObject { private: BVHTree* m_bvhTree; TriangleBVHTree* m_triangleBVHTree; Shader& m_shader; public: explicit DebugBVH(BVHTree* bvhTree, Shader& shader); explicit DebugBVH(TriangleBVHTree* bvhTree, Shader& shader); void render(); ~DebugBVH(); }; } #endif //STEP_3_DEBUG_GUI_H