A 2D physics simulator written in C++ (20).
std::shared_ptr
/ std::unique_ptr
.yml
filesFxArray
and comprehensive linear-algebra utilities in Fx2D/Math.hcmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
chmod +x fxmake # Make executable
./fxmake # Build in Release mode
./fxmake debug # Build in Debug mode
./fxmake rebuild # Clean and rebuild
./fxmake clean # Clean build artifacts
#include "Fx2D/Core.h"
int main() {
// Load scene from YAML
auto scene = FxYAML::buildScene("./Scene.yml");
// Initialize renderer with 60 FPS target
FxRylbRenderer renderer(scene, 60);
// Start the simulation loop
renderer.run();
return 0;
}
For headless simulation, testing, or data collection.
int main() {
// Load scene from YAML
auto scene = FxYAML::buildScene("./Scene.yml");
const double dt = 0.001f; // Fixed time step in seconds
auto ball = scene.get_entity("ball"); // Get the poiner to the entity by name "ball"
for (size_t i = 0; i < 10; ++i) {
scene.step(dt); // Advance physics without rendering
std::cout<< ball->pose <<std::endl;
}
return 0;
}
To run an example, copy the main.cpp
from examples to src/
, build the project, and ensure Scene.yml
and assets are accessible to the executable.
./Fx2D # Linux/macOS
./Fx2D.exe # Windows
BSD-3-Clause License
Contributions are welcome! Please follow the existing code style and conventions.
main
, commit your changes, and open a pull request referencing the issue.