Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
98bc4c2
feat: Added Qt6 find_package to GUI cmake
SaltyJoss Jun 2, 2026
45120c3
feat: Added basic debug test initialisation of qt6 in `Application`
SaltyJoss Jun 2, 2026
22e3a97
feat: Added `DSFE_MainWindow` header and compiler files, with defined…
SaltyJoss Jun 2, 2026
62a964e
feat: Added basic call from `Application`
SaltyJoss Jun 2, 2026
c75ae3a
feat: Added shell of `ProjectPage` class
SaltyJoss Jun 2, 2026
7953ebe
feat: Addded viewport widget logic and docking variant logic (though …
SaltyJoss Jun 2, 2026
b3ca889
feat: Separated `SimManager` compiler file into domain-specific subfi…
SaltyJoss Jun 4, 2026
c3f782c
refactor: Port application from GLFW to Qt (QOpenGLWidget)
SaltyJoss Jun 4, 2026
c20a3d7
feat: Added control panel and robot selector UI integration
SaltyJoss Jun 5, 2026
69eb91f
feat: Added SystemMap.h for robotic arm enums and mappings
SaltyJoss Jun 5, 2026
00f78c0
fixes: Removed QOpenGLFunctions from ViewportWidget, add ControlPanel
SaltyJoss Jun 5, 2026
421db10
fixes: Added setFltArray2, cleanup includes, and FBO update
SaltyJoss Jun 5, 2026
ac242ca
feat: Added RAII OpenGL context management and context hooks
SaltyJoss Jun 5, 2026
37ba554
fixes: Corrected stale FragColour assignment in `present.frag.glsl`
SaltyJoss Jun 6, 2026
2ba6b4b
feat: Added visual outline for top task bar.
SaltyJoss Jun 6, 2026
e14bfe3
feat: Reintroduced old layout style from imgui dimesions
SaltyJoss Jun 6, 2026
5c0acf6
feat: Updated menu items in `buildMenuBar` to have actual actions, in…
SaltyJoss Jun 6, 2026
88ab656
feat: Implemented Qt6-based version of old imgui integrator selection…
SaltyJoss Jun 6, 2026
b0abf12
fixes: Small code corrections to compliment new logic
SaltyJoss Jun 6, 2026
171739c
feat: Added basic joint telemetry in the new control panel widget via…
SaltyJoss Jun 6, 2026
51add85
feat: refactor old fraction logic from imgui widgets into Qt6
SaltyJoss Jun 6, 2026
e6b0a92
feat: Implemented timestepping fractions into `simPropertiesPanel()`
SaltyJoss Jun 6, 2026
c41f5ce
fixes: Added declaration of QObject for class def, hardcoded header l…
SaltyJoss Jun 6, 2026
a760994
feat(WIP): Added basic DSL script loading and running (which needs fi…
SaltyJoss Jun 6, 2026
40a0c30
fixes
SaltyJoss Jun 6, 2026
0b79bfe
chore: Updated relevant file paths for widget dialogs
SaltyJoss Jun 6, 2026
bf6f6aa
fixes: Removed unsured file
SaltyJoss Jun 7, 2026
3dbe402
feat: Added destructor to `ViewportWidget`
SaltyJoss Jun 7, 2026
45aca05
chore: Added code comments and small corrections
SaltyJoss Jun 7, 2026
1d3ecd1
refactor: Updated `tick()` to contain the dirty robot presentation ch…
SaltyJoss Jun 7, 2026
7f5d285
feat: Added more alignments with previous DSL script editor in `DSLEd…
SaltyJoss Jun 7, 2026
add31d0
refactor: Updated `buildMenuBar()` to call DSLEditorWidget methods fo…
SaltyJoss Jun 7, 2026
7d44291
feat: Added basic joint telemetry in `ControlPanelWidget`
SaltyJoss Jun 7, 2026
5ac799e
feat: Added the console and simulation logging window in `ConsoleOutp…
SaltyJoss Jun 8, 2026
87d89d6
feat: Linked up automatic sim log clearning with script execution
SaltyJoss Jun 8, 2026
99a551a
fixes: Removed scene objects
SaltyJoss Jun 8, 2026
03b6979
feat: Added hard cap of terminal enteries
SaltyJoss Jun 8, 2026
93a8e00
fixes: Corrected taskbar duplciation error
SaltyJoss Jun 8, 2026
44b3d0f
feat: Added rudamentery syntax highlighting of DSL scripts
SaltyJoss Jun 8, 2026
7b48fb0
feat: Integrated DSL syntax highlighting into `DSLEditorWidget`
SaltyJoss Jun 8, 2026
4d79bd6
feat: Added new styling format, using .qss style file utilised by `qr…
SaltyJoss Jun 8, 2026
2042d46
chore: Updated minimum cmake version to 3.17 from 3.10
SaltyJoss Jun 10, 2026
130ad11
feat: Introduced quality, resolution, and shader switches in the view…
SaltyJoss Jun 10, 2026
29598de
fixes: Removed stale files referring to `imgui.h`, `implot.h`, `imfil…
SaltyJoss Jun 13, 2026
45c3405
fixes: Removed CMake fetch and includes of previously removed libraries
SaltyJoss Jun 13, 2026
23bd1af
feat: Added new `MeshPresentationBuilder` class with a dedicated `bui…
SaltyJoss Jun 13, 2026
add51c7
chore: Code cleanup of unused / old code in GUI files
SaltyJoss Jun 13, 2026
1533216
fixes: Updated `buildRobotMenu` to directly call the core `loadRobot(…
SaltyJoss Jun 13, 2026
45ce847
feat: Introduced new internal library in PxM, `PhysLib`
SaltyJoss Jun 13, 2026
c41e106
feat: Initialised new `SingleBodySystem` method to allow PROPER model…
SaltyJoss Jun 13, 2026
8c73349
fixes: Removed accidental ` "`" `
SaltyJoss Jun 13, 2026
dd96bf2
chore: Code cleanup
SaltyJoss Jun 13, 2026
d728728
feat: Added `SingleBodySystem` struct into PhysLib
SaltyJoss Jun 13, 2026
03ea214
feat: Added basic `SingleBodyDynamics` class with methods to `compute…
SaltyJoss Jun 13, 2026
3f6f42a
fixes: Updated SinlgeBody naming to `Body`
SaltyJoss Jun 13, 2026
791a5ca
fixes: Removed unused and inappropriate MathLib files
SaltyJoss Jun 13, 2026
d8929ef
feat: Added new central `PhysLib` header
SaltyJoss Jun 13, 2026
d54bfbd
feat: Added a simple stepping method into `SingleBodySystem`
SaltyJoss Jun 13, 2026
acdddd2
fixes
SaltyJoss Jun 13, 2026
25395a3
refactor: Updated `SingleBodyDynamics` and `Body` to reflect new pos,…
SaltyJoss Jun 13, 2026
650e3d8
fixes: Updated `Dynamics` to have correct matrix and vector computations
SaltyJoss Jun 13, 2026
d8ae172
feat: Added basic set of unit tests to test the `Dynamics.h` methods
SaltyJoss Jun 13, 2026
6f2a84b
fixes: Updated logic to correctly compute derivatives in single body …
SaltyJoss Jun 13, 2026
5453401
feat: Integrated basic pointer referencing of `SingleBodySystem` into…
SaltyJoss Jun 16, 2026
beccf8e
refactor: Moved to `CMakePresets` focused build system, preparing for…
SaltyJoss Jun 16, 2026
40debc1
refactor: Updated `build.yml` to use preset logic
SaltyJoss Jun 16, 2026
cf0dd24
fixes: Try different Qt6 version for workflow
SaltyJoss Jun 16, 2026
a473b31
fixes
SaltyJoss Jun 16, 2026
4bad85f
fixes
SaltyJoss Jun 16, 2026
941c9ad
feat: Added `DSFE_ENABLE_GUI` compile time flag, influencing the incl…
SaltyJoss Jun 16, 2026
d585771
feat: Added GUI compile-time toggle for DSFE builds
SaltyJoss Jun 16, 2026
60d30c6
refactor: Updated `CMakePresets` to contain a windows gui and non-gui…
SaltyJoss Jun 16, 2026
df5fe2a
refactor: Update build workflow to NOT include Qt6 Install step
SaltyJoss Jun 16, 2026
d25a392
fixes
SaltyJoss Jun 16, 2026
758a536
fixes
SaltyJoss Jun 16, 2026
065eadf
feat: Updated GLM include to not add library expectation
SaltyJoss Jun 16, 2026
6c1b325
fixes: Corrected ctest call in `build`, added `testPresets` into `CMa…
SaltyJoss Jun 16, 2026
63ce174
feat: Updated CMakeLists to support basic identification of OS in the…
SaltyJoss Jun 16, 2026
c5552a1
refactor: Updated and corrected current implementation and calls of W…
SaltyJoss Jun 16, 2026
17416ad
refactor: Updated CMake to make `MathLib` and `PhysLib` interfaces in…
SaltyJoss Jun 16, 2026
d584ca8
fixes: Corrected extra character
SaltyJoss Jun 16, 2026
08256d9
refactor: Added linux test presets
SaltyJoss Jun 16, 2026
6650240
fixes: Removal of `MathLibAPI.h` includes
SaltyJoss Jun 16, 2026
9d8b114
fixes: temp rename for `PhysLib` include to change casing
SaltyJoss Jun 16, 2026
f20e12c
fixes: Renamed `PhysLib` include dir
SaltyJoss Jun 16, 2026
aa04f0b
fixes: Reveresed accidental renaming of `SingleBodySystem` dir
SaltyJoss Jun 16, 2026
7472667
fixes: Updated `isfinite` use in DualNumebr unit tests
SaltyJoss Jun 16, 2026
722ba6c
fixes: Applied a corssplatform conditional for localtime usage in `De…
SaltyJoss Jun 16, 2026
8f669e1
fixes: Remove last two templated callbacks of `isfinite`
SaltyJoss Jun 16, 2026
41fa271
fixes: Removed unsuded vars
SaltyJoss Jun 16, 2026
419760d
fixes: Updated incorrect include path
SaltyJoss Jun 16, 2026
3b63c49
fixes: Updated Win32 specific methods to include compile time conditi…
SaltyJoss Jun 16, 2026
08b1c4e
fixes: Updated `Step` to change the `f_deriv` lambda to have an UNUSE…
SaltyJoss Jun 16, 2026
1db8884
fixes: Correct code warnings
SaltyJoss Jun 16, 2026
326a492
fixes: Correct case error in include
SaltyJoss Jun 16, 2026
1772033
fixes: Code cleanup
SaltyJoss Jun 16, 2026
45e3b56
fixes: Updating Scalar and template policies
SaltyJoss Jun 16, 2026
05b7e70
fixes: Updated bad include casing
SaltyJoss Jun 16, 2026
f8c1584
fixes: Updated bad include casing
SaltyJoss Jun 16, 2026
04fea03
fixes: Corrected Unix-relative duplicate variant type
SaltyJoss Jun 16, 2026
faca2b2
fixes: Code cleanup
SaltyJoss Jun 16, 2026
b5007e9
fixes: Correction of template use
SaltyJoss Jun 16, 2026
37924a4
fixes
SaltyJoss Jun 16, 2026
a3cf1a3
fixes: Code cleanup
SaltyJoss Jun 16, 2026
7ee8a48
fixes: Include casing corrections
SaltyJoss Jun 16, 2026
ea270cc
fixes: UJpdated CMake to include Linux safe compile instructions for …
SaltyJoss Jun 16, 2026
4b7a651
fixes: Update `CMakePresets` linux preset
SaltyJoss Jun 16, 2026
a7b0471
fixes
SaltyJoss Jun 16, 2026
415d13b
fixes
SaltyJoss Jun 16, 2026
4647bd4
fixes: CMake custom command compability in Engine for Linux
SaltyJoss Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,16 @@ jobs:
- name: Configure
shell: pwsh
run: |
cmake -S . -B build `
-A x64 `
cmake --preset windows-x64 `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake"

- name: Build
shell: pwsh
run: |
cmake --build build --config Release --verbose
cmake --build --preset windows-x64-release --verbose

- name: Run tests
shell: pwsh
run: |
ctest --test-dir build --output-on-failure
ctest --preset windows-x64-release --output-on-failure
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -476,3 +476,6 @@ vcpkg_downloads/
!CMakeLists.txt
!**/imgui.ini

/build-ninja
/CMakeFiles
/_deps
58 changes: 5 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
# CMakeLists.txt for DSFE project (root CMakeLists.txt)
cmake_minimum_required(VERSION 3.10)

if (POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

cmake_minimum_required(VERSION 3.17)
project(DSFE LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")

# Set common output directories for all targets
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(OUTPUT_BASE ${CMAKE_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BASE}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BASE}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_BASE}/lib)

include(FetchContent)

Expand All @@ -27,32 +21,6 @@ FetchContent_Declare(
)
FetchContent_MakeAvailable(eigen)

FetchContent_Declare(
glfw
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 3.4
)
FetchContent_MakeAvailable(glfw)

# Fetch GLM from GitHub
FetchContent_Declare(
glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
GIT_TAG 1.0.3
)
FetchContent_MakeAvailable(glm)

FetchContent_Declare(
assimp
GIT_REPOSITORY https://github.com/assimp/assimp.git
GIT_TAG v6.0.4
)

set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE)

FetchContent_MakeAvailable(assimp)

FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
Expand All @@ -62,22 +30,6 @@ FetchContent_Declare(
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

FetchContent_Declare(
imgui
GIT_REPOSITORY https://github.com/ocornut/imgui.git
GIT_TAG docking
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(imgui)

FetchContent_Declare(
implot
GIT_REPOSITORY https://github.com/epezent/implot.git
GIT_TAG v0.17
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(implot)

FetchContent_Declare(
nlohmann_json
GIT_REPOSITORY https://github.com/nlohmann/json.git
Expand Down
156 changes: 110 additions & 46 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -1,81 +1,145 @@
{
"version": 3,
"version": 8,
"configurePresets": [
{
"name": "windows-base",
"name": "base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe"
},
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"DSFE_ENABLE_GUI": "OFF"
}
},
{
"name": "base-gui",
"hidden": true,
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"DSFE_ENABLE_GUI": "ON"
}
},
{
"name": "windows-x64",
"displayName": "Windows x64",
"inherits": "base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "x64-debug",
"displayName": "x64 Debug",
"inherits": "windows-base",
},
"generator": "Visual Studio 18 2026",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "x64-release",
"displayName": "x64 Release",
"inherits": "x64-debug",
"name": "windows-x64-gui",
"displayName": "Windows x64 (GUI)",
"inherits": "base-gui",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"generator": "Visual Studio 18 2026",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "x86-debug",
"displayName": "x86 Debug",
"inherits": "windows-base",
"CMAKE_PREFIX_PATH": "C:/Qt/6.11.1/msvc2022_64"
},
"architecture": {
"value": "x86",
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "x86-release",
"displayName": "x86 Release",
"inherits": "x86-debug",
"name": "linux-x64-debug",
"displayName": "Linux x64 Debug",
"inherits": "base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_PREFIX_PATH": "/usr/lib/x86_64-linux-gnu/cmake",
"HDF5_DIR": "",
"CMAKE_IGNORE_PATH": "/mnt/c/Program Files/HDF_Group/HDF5/2.0.0"
},
"architecture": {
"value": "x64",
"strategy": "external"
}
},
{
"name": "linux-debug",
"displayName": "Linux Debug",
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
},
"name": "linux-x64-release",
"displayName": "Linux x64 Release",
"inherits": "base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"vendor": {
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
}
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PREFIX_PATH": "/usr/lib/x86_64-linux-gnu/cmake",
"HDF5_DIR": "",
"CMAKE_IGNORE_PATH": "/mnt/c/Program Files/HDF_Group/HDF5/2.0.0"
},
"architecture": {
"value": "x64",
"strategy": "external"
}
}
],
"buildPresets": [
{
"name": "windows-x64-debug",
"configurePreset": "windows-x64",
"configuration": "Debug"
},
{
"name": "windows-x64-release",
"configurePreset": "windows-x64",
"configuration": "Release"
},
{
"name": "windows-x64-gui-debug",
"configurePreset": "windows-x64-gui",
"configuration": "Debug"
},
{
"name": "windows-x64-gui-release",
"configurePreset": "windows-x64-gui",
"configuration": "Release"
},
{
"name": "linux-x64-debug",
"configurePreset": "linux-x64-debug"
},
{
"name": "linux-x64-release",
"configurePreset": "linux-x64-release"
}
],
"testPresets": [
{
"name": "windows-x64-release",
"configurePreset": "windows-x64",
"output": { "outputOnFailure": true }
},
{
"name": "windows-x64-gui-release",
"configurePreset": "windows-x64-gui",
"output": { "outputOnFailure": true }
},
{
"name": "linux-x64-release",
"configurePreset": "linux-x64-release",
"output": { "outputOnFailure": true }
}
]
}
13 changes: 6 additions & 7 deletions DSFE_App/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# CMakeLists.txt for the DSFE_App project
cmake_minimum_required(VERSION 3.10)
project(DSFE_App LANGUAGES C CXX)

# Add projects within the DSFE_App directory
# CMakeLists.txt for the DSFE_App
add_subdirectory(DSFE_Core)
add_subdirectory(DSFE_GUI)
add_subdirectory(DSFE_Engine)
option(DSFE_ENABLE_GUI "Enable GUI module" ON)
if(DSFE_ENABLE_GUI)
add_subdirectory(DSFE_GUI)
endif()
add_subdirectory(DSFE_Engine)
Loading
Loading