Refactor application to use Qt6, enhance GUI features, and support x64 Linux in batch runs#91
Merged
Merged
Conversation
* This will be hardcoded UNTIL I have it working as expected, then I will convert it to a cmake preset file!
* This eventually will be the workspaces internal default for a "new" project, however for now its going to be used to ensure the project can effectively replicate the imgui version
…unused due to differng logic I am still exploring)
…les to reduce file size and code stink
NOTES (partially generated): * Refactored main window and rendering to use Qt (QApplication, QMainWindow, QOpenGLWidget) instead of GLFW. * Updated `Application`, `DSFE_MainWindow`, `ProjectPage`, and `ViewportWidget` to support Qt-based management and input. * Introduced eKeyCode for unified key handling. * Adapted `SimulationManager` and rendering pipeline for Qt, including new `present.frag.glsl` shader. * Removed GLFW-specific code and update CMakeLists.txt accordingly. * Added KeyCode.h for cross-platform input. TODO: * Test loading of dynamic systems * Start to really remove GLFW from code * Cleanup existing code * Replicate process for ControlPanel, DSL editor, and DebugPanel(CLI) * Remove hardcoded plugin path and cmake path, replace with permanent solution
* Introduced setFltArray2 for float array uniforms in shaders and update usage for cascade splits. * Removed unused GLFW includes and redundant headers. * Adjusted QApplication initialization order. * Changed shadow pass FBO binding to _presentationFBO.
* Introduced ScopeGLContext for RAII-based OpenGL context management using user-provided hooks (this was like 6 hours of debugging btw, knowing it was context but not knowing how to fix it) * Added context hook support to SimManager and set hooks from ViewportWidget. * Added ScopeGLContext for current use in robot loading to ensure correct context. * Added GL_CHECKPOINT macro for error checking and perform minor code clean-ups when debugging (REMOVE FOR RELEASE).
…cluding loading of robotic systems
… logic in `simPropertiesPanel` and `buildIntegratorCombos`
… `jointInfoPanel` and `displayJointInfo` * Not really sure why I did this before getting the scripts working. * Going to add the dt fraction next, then focus on just getting script functioning back!
* With help from AI for this, only for the actual Qt6 syntax (still learning).
…ocation in CMAKE for MOC
…xing) * The running is malformed somewhere (need to fix now) * I believe Qt6 means I can add syntax highlighting!! * Need to coordinate colours
…ecks rather than previous placement in `renderViewport` * Also removed old `render()` method as it is no decrepid
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces significant improvements to the CMake build system and project structure for better maintainability, platform support, and modularity. Key changes include modernizing and restructuring the CMake configuration, refining preset and workflow usage, and cleaning up the source organization and dependencies.
CMake and Build System Modernization:
Updated the minimum required CMake version to 3.17 in all relevant
CMakeLists.txtfiles and removed outdated policy handling for MSVC debug information. Output directories are now consistently set using a newOUTPUT_BASEvariable. [1] [2]Refined and modularized the core library's source structure by splitting source file lists into logical groups (
DEP_CORE_SRC,SINGLE_BODY_SYS_SRC, etc.) and updatingtarget_sourcesaccordingly. Improved platform-specific compiler options and visibility settings. [1] [2]Enhanced dependency management: removed direct fetching of several dependencies (GLFW, GLM, Assimp, ImGui, ImPlot) from the root
CMakeLists.txt, and improved HDF5 linking logic for better compatibility across platforms and package configurations. [1] [2] [3]CMake Presets and Workflow Improvements:
Overhauled
CMakePresets.jsonto version 8, introducing new base and GUI presets, platform-specific configurations for Windows and Linux, and new build/test presets for streamlined CI and local development.Updated the GitHub Actions workflow (
.github/workflows/build.yml) to use the new CMake presets for configure, build, and test steps, ensuring consistency and leveraging the improved preset system.Project Structure and Conditional Build Logic:
DSFE_App/CMakeLists.txtto use anoption()for enabling/disabling the GUI module (DSFE_ENABLE_GUI), and conditionally add theDSFE_GUIsubdirectory based on this flag.Header and Source Cleanup:
<MathLibAPI.h>, pragma warnings) across multiple header files inDSFE_Core, improving clarity and reducing build warnings. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]Platform and Export Improvements:
Most Important Changes:
CMake and Build System Modernization
DSFE_Core. [1] [2]Dependency and Preset Management
CMakePresets.jsonto version 8, introducing new base, GUI, and platform-specific presets for configure/build/test.Project Structure and Conditional Logic
DSFE_ENABLE_GUIoption and conditional inclusion of the GUI module in the main application CMake file.Header and Export Improvements